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 在firebug调试时用console.log的方法
May 10 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
May 07 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
Jul 09 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
小程序两种滚动公告栏的实现方法
Sep 17 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
Node.js的特点详解
2017/02/03 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
中专自荐信
2013/10/13 职场文书
土木工程师岗位职责
2013/11/24 职场文书
机关出纳岗位职责
2014/04/03 职场文书
社区科普工作方案
2014/06/03 职场文书
学校食品安全实施方案
2014/06/14 职场文书
妇女工作先进事迹
2014/08/17 职场文书
个人授权委托书范本
2014/09/14 职场文书
机关作风建设自查报告
2014/10/22 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
入党申请书怎么写?
2019/06/21 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
JavaScript实现简单的音乐播放器
2022/08/14 Javascript