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 相关文章推荐
Jquery实现三层遍历删除功能代码
Apr 23 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
javascript使用call调用微信API
Dec 15 Javascript
jQuery在ul中显示某个li索引号的方法
Mar 17 Javascript
基于jQuery实现动态数字展示效果
Aug 12 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
Aug 12 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
Aug 03 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
Apache设置虚拟WEB
2006/10/09 PHP
PHP面向对象概念
2011/11/06 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php实现Mysql简易操作类
2015/10/11 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Python日志模块logging简介
2015/04/13 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python 文件查找及内容匹配方法
2018/10/25 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
前台接待的工作职责
2013/11/21 职场文书
聚美优品的广告词
2014/03/14 职场文书
工作证明书
2015/06/15 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Python基础之元类详解
2021/04/29 Python
react中的DOM操作实现
2021/06/30 Javascript