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学习笔记(五)正则表达式
Apr 08 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
详解使用fetch发送post请求时的参数处理
Apr 05 Javascript
angular ng-click防止重复提交实例
Jun 16 Javascript
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 Javascript
Vue.js 无限滚动列表性能优化方案
Dec 02 Javascript
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
Angularjs上传图片实例详解
2017/08/06 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
python求质数的3种方法
2018/09/28 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
出国导师推荐信
2014/01/16 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
工作证明格式及范本
2014/09/12 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
小学教师师德整改措施
2014/09/29 职场文书
贪污检举信范文
2015/03/02 职场文书
员工工作表现自我评价
2015/03/06 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL