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 setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
精通Javascript系列之数值计算
Jun 07 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
JavaScript加强之自定义callback示例
Sep 21 Javascript
juery框架写的弹窗效果适合新手
Nov 27 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
jQuery实现文字自动横移
Jan 08 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 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
基于xcache的配置与使用详解
2013/06/18 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现字典依据value排序
2016/02/24 Python
Python实现的双色球生成功能示例
2017/12/18 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
python实现弹窗祝福效果
2019/04/07 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
如何理解委托
2012/01/06 面试题
小学教师的个人自我鉴定
2013/10/24 职场文书
《长征》教学反思
2014/04/27 职场文书
护林员个人总结
2015/03/04 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
python异常中else的实例用法
2021/06/15 Python
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
基于angular实现树形二级表格
2021/10/16 Javascript