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一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
vue视频播放暂停代码
Nov 08 Javascript
JS实现横向轮播图(初级版)
Jun 24 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
JavaScript实现栈结构详细过程
Dec 06 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
PHP伪静态写法附代码
2008/06/20 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
iOS10推送通知开发教程
2016/09/19 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP实现简易图形计算器
2020/08/28 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python递归下载文件夹下所有文件
2019/08/31 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
青年教师培训方案
2014/02/06 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS