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 相关文章推荐
js监听键盘事件示例代码
Jul 26 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 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桌面中心(二) 数据库写入
2007/03/11 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
Python实现SMTP邮件发送
2020/06/16 Python
numba提升python运行速度的实例方法
2021/01/25 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
运动会入场词50字
2014/02/20 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
青岛导游词
2015/02/12 职场文书
2015年加油站工作总结
2015/05/13 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
Pygame Draw绘图函数的具体使用
2021/11/17 Python
python blinker 信号库
2022/05/04 Python