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项链效果
Feb 13 Javascript
js 单击式的下拉菜单效果实例
Aug 13 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 Javascript
Vue使用预渲染代替SSR的方法
Jul 02 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
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/03 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
浅谈vue项目打包优化策略
2018/09/29 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python基础之函数用法实例详解
2014/09/10 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Python实现单词拼写检查
2015/04/25 Python
详解Django框架中的视图级缓存
2015/07/23 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
自我评价范文点评
2013/12/04 职场文书
财务总监岗位职责
2015/02/03 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
mysql中关键词exists的用法实例详解
2022/06/10 MySQL