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 相关文章推荐
Jquery中删除元素的实现代码
Dec 29 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
vue axios封装及API统一管理的方法
Apr 18 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 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下封装较好的数字分页方法
2010/11/23 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
python3对接mysql数据库实例详解
2019/04/30 Python
python datetime处理时间小结
2020/04/16 Python
Python类及获取对象属性方法解析
2020/06/15 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
艺术系应届生的自我评价
2013/10/19 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
生物制药专业求职信
2014/03/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
校园广播稿精选
2014/10/01 职场文书
2014年质检工作总结
2014/11/26 职场文书
消防演习通知
2015/04/25 职场文书
简爱电影观后感
2015/06/10 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
浅谈python数据类型及其操作
2021/05/25 Python