script标签属性type与language使用选择


Posted in Javascript onDecember 02, 2012

被人问起一个问题:

<script language = "JavaScript"> 
<script type="text/javascript"> 
<script>

这三个标签的使用有什么区别?
虽然一直在用,却也没有好好去弄清楚,这里详细说明一下。
查阅一些资料,主要是浏览器支持问题。type 和 language 属性都可用来指定 <script> 标签中的脚本的类型。language 属性在 HTML 和 XHTML 标准中受到了非议,这两个标准提倡使用 type 属性。遗憾的是,这两个属性的值是不一样的。

您可能偶尔会看见 language 的值为 VBScript(对 type 而言是 text/vbscript),表示包含的脚本代码是用 Microsoft 的 Visual Basic Script 编写的。

利用 JavaScript,您还可以使用 language 的值 "JavaScript 1.1",表示包含的脚本语句只能被 Netscape 3.0 或更新的版本处理。Netscape 2.0 只支持 JavaScript 1.0,而无法处理标记为 "JavaScript 1.1" 的脚本。

为了保证脚本程序可以正常执行,除非特意使用仅 IE 支持的 VBScript 和 Script Encoder 机制外,应当将 SCRIPT 标记的 "type" 属性设置为 "javascript",并且不要设置已经废弃的 "Languange" 属性。

各浏览器对于 "type" 和 "language" 属性本身均支持,但是对于其中设置的脚本语言类型识别与支持各异:

  • "type" 和 "language" 同时存在时,所有浏览器均优先识别 "type" 属性内的脚本类型;
  • 其中 IE 浏览器实际支持 JScript 和 VBScript 脚本语言标示以及 Script Encoder 加密;
  • Firefox Chrome Safari Opera 对 "type" 属性值的具体识别宽容度不一致,相对 Chrome Safari 对属性值正确性校验更加宽松,Firefox 的校验最为严格;
  • 在 "Language" 属性值识别宽容度比较中,各浏览器中 Chrome Safari 依然最为宽松,IE 最为严格,Firefox 与 Opera 持平;
  • Language Encode 比较中,只有 IE 支持 JScript.Encoder 以及 VBScript.Encoder 类型设置,Firefox Chrome Safari均不支持,Opera 中则是该属性值被修复为默认的 Javascript 脚本语言后才有输出值。
<script language="javascript"> 
function a() { 
b = "a"; 
} 
a(); 
alert(b); 
</script>

关于变量有一个问题,即使你在函数内如同上面那样声明变量,它就会变成全局变量。
如果用 var 声明就会有一个问题。

<script language="javascript"> 
function a() { 
var b = "a"; 
delete b; 
alert(b); 
} 
a(); 
</script>

结果依然会弹出a。
为了保证脚本程序可以正常执行,除非特意使用仅 IE 支持的 VBScript 和 Script Encoder 机制外,应当将 SCRIPT 标记的 "type" 属性设置为 "javascript",并且不要设置已经废弃的 "Languange" 属性。

Javascript 相关文章推荐
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 #Javascript
json对象转字符串如何实现
Dec 02 #Javascript
javascript 构造函数强制调用经验总结
Dec 02 #Javascript
js精度溢出解决方案
Dec 02 #Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 #Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 #Javascript
javascript控制swfObject应用介绍
Nov 29 #Javascript
You might like
PHP脚本的10个技巧(8)
2006/10/09 PHP
php SQL Injection with MySQL
2011/02/27 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
JS中的多态实例详解
2017/10/15 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python实现超简单的视频对象提取功能
2018/06/04 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
如何写python的配置文件
2020/06/07 Python
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
列车长先进事迹材料
2014/01/25 职场文书
自我鉴定 电子商务专业
2014/01/30 职场文书
明信片寄语大全
2014/04/08 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年度物流工作总结
2015/04/30 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript