很多使用javascript的朋友都有这样一个问题:如何选择脚本标签属性类型和语言。为了解决这个疑惑,本文进行了详细的梳理,有需要的可以参考一下。
被问到一个问题:
脚本语言=JavaScript
脚本类型=文本/javascript
脚本
这三个标签的使用有什么区别?
虽然一直在用,但是一直没有很好的理解。下面详细解释一下。
查一些资料,主要是关于浏览器支持的。类型和语言属性可用于在脚本标记中指定脚本的类型。在提倡使用类型属性的HTML和XHTML标准中,语言属性受到了批评。不幸的是,这两个属性的值是不同的。
您可能偶尔会看到language的值是VBScript(type为text/vbscript),这意味着包含的脚本代码是用Microsoft Visual Basic Script编写的。
使用JavaScript,您还可以使用语言 JavaScript 1.1 的值,这意味着包含的脚本语句只能由Netscape 3.0或更高版本处理。网景2.0只支持JavaScript 1.0,不能处理标有‘JavaScript 1.1’的脚本。
为了保证脚本程序的正常执行,应该将script标签的 type 属性设置为 javascript ,不应该设置过时的 Languange 属性,除非专门使用了IE支持的VBScript和SCRIPT编码器机制。
各浏览器对于 "type" 和 "language" 属性本身均支持,但是对于其中设置的脚本语言类型识别与支持各异:
当‘类型’和‘语言’同时存在时,所有浏览器都先识别‘类型’属性中的脚本类型;
其中,IE浏览器实际支持JScript和VBScript脚本语言标记和脚本编码器加密;
Chrome Firefox Safari Opera对于 type 属性值的具体识别的容忍度是不一致的,比Chrome Safari宽松,Firefox的验证是最严格的;
在语言属性值识别的容忍度比较中,Chrome Safari仍然是浏览器中最宽松的,IE最严格,Firefox与Opera持平。
在语言编码的对比中,只有IE支持JScript。编码器和VBScript。编码器类型设置,但Firefox Chrome Safari没有。在Opera中,只有在属性值固定为默认的Javascript脚本语言后,输出值才是。
脚本语言=javascript
函数a() {
b= a
}
a();
警戒(b);
/脚本
变量有问题。即使你像上面那样在函数中声明一个变量,它也会变成一个全局变量。
如果用var声明,会有问题。
脚本语言=javascript
函数a() {
var b= a
删除b;
警戒(b);
}
a();
/脚本
结果还是会弹出一个。
为了保证脚本程序的正常执行,应该将script标签的 type 属性设置为 javascript ,不应该设置过时的 Languange 属性,除非专门使用了IE支持的VBScript和SCRIPT编码器机制。