script标签属性用type还是language


Posted in Javascript onJanuary 21, 2015

被人问起一个问题:

<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 颜色选择器(兼容firefox)
Mar 05 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
Node.js学习入门
Jan 03 Javascript
jQuery的$.extend 浅拷贝与深拷贝
Mar 08 Javascript
JS ES6中setTimeout函数的执行上下文示例
Apr 27 Javascript
element-ui 中使用upload多文件上传只请求一次接口
Jul 19 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
使用JS实现简易计算器
Jun 14 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 Javascript
JS交换变量的方法
Jan 21 #Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 #Javascript
js实现DOM走马灯特效的方法
Jan 21 #Javascript
浅谈javascript 迭代方法
Jan 21 #Javascript
js实现用户注册协议倒计时的方法
Jan 21 #Javascript
浅谈javascript 归并方法
Jan 21 #Javascript
JS获取时间的方法
Jan 21 #Javascript
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
JS获取整个页面文档的实现代码
2011/12/15 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
python 判断网络连通的实现方法
2018/04/22 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
爱国卫生月实施方案
2014/02/21 职场文书
安全生产责任书
2014/03/12 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
小学老师对学生的评语
2014/12/29 职场文书
年底个人总结范文
2015/03/10 职场文书