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 相关文章推荐
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
Mar 13 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
jquery仿微信聊天界面
May 06 jQuery
基于vue.js实现的分页
Mar 13 Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 Javascript
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 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操作符与控制结构代码
2011/12/30 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
用Python抢过年的火车票附源码
2015/12/07 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
用python写PDF转换器的实现
2020/10/29 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
列车长先进事迹材料
2014/01/25 职场文书
工作会议主持词
2014/03/17 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
python numpy中setdiff1d的用法说明
2021/04/22 Python