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 相关文章推荐
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
动态样式类封装JS代码
Sep 02 Javascript
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
javascript实现验证身份证号的有效性并提示
Apr 30 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
jQuery对象的链式操作用法分析
May 10 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
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
php批量上传的实现代码
2013/06/09 PHP
php中cookie的使用方法
2014/03/29 PHP
PHP单例模式详细介绍
2015/07/01 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
python开发中module模块用法实例分析
2015/11/12 Python
python制作websocket服务器实例分享
2016/11/20 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
详解Python做一个名片管理系统
2019/03/14 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
终端业务员岗位职责
2013/11/27 职场文书
公司费用报销管理制度
2015/08/04 职场文书
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript