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 相关文章推荐
Javascript 定时器调用传递参数的方法
Nov 12 Javascript
javascript 动态调整图片尺寸实现代码
Dec 28 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
Nov 07 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 Javascript
15分钟学会vue项目改造成SSR(小白教程)
Dec 17 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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
redis 队列操作的例子(php)
2012/04/12 PHP
php异常处理使用示例
2014/02/25 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
关于this和self的使用说明
2010/08/01 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
浅析node.js中close事件
2014/11/26 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
详解angular element()方法使用
2017/04/08 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
Python遍历目录的4种方法实例介绍
2015/04/13 Python
整理Python最基本的操作字典的方法
2015/04/24 Python
利用python代码写的12306订票代码
2015/12/20 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
Python如何进行时间处理
2020/08/06 Python
影视艺术学院毕业生自荐信
2013/11/13 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
试用期员工考核制度
2014/01/22 职场文书
珠宝店促销方案
2014/03/21 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
公司开除员工通知
2015/04/22 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
MySQL主从切换的超详细步骤
2022/06/28 MySQL