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 相关文章推荐
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
JavaScript 检测浏览器和操作系统的脚本
Dec 26 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
Aug 05 Javascript
jQuery表单验证功能实例
Aug 28 Javascript
基于jquery实现三级下拉菜单
May 10 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
seajs学习教程之基础篇
Oct 20 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 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
图书管理程序(二)
2006/10/09 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
javascript self对象使用详解
2016/10/18 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
require.js中的define函数详解
2017/07/10 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
Python搭建FTP服务器的方法示例
2018/01/19 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
聊城大学毕业生自荐书
2014/02/01 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
家教广告词
2014/03/19 职场文书
英语教师求职信范文
2015/03/20 职场文书
小学生安全保证书
2015/05/09 职场文书