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的with语句使用方法
Sep 21 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
jQuery基本选择器选择元素使用介绍
Apr 18 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
js获取新浪天气接口的实现代码
Jun 06 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
TypeScript中的方法重载详解
Apr 12 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
晶体管来复再生式二管收音机
2021/03/02 无线电
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
详解python中asyncio模块
2018/03/03 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python实现日志按天分割
2019/07/22 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
机电一体化应届生求职信
2014/08/09 职场文书
环卫工人节活动总结
2014/08/29 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
Python使用永中文档转换服务
2022/05/06 Python