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工具 Cookie 封装
Aug 21 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
Nov 12 Javascript
js中精确计算加法和减法示例
Mar 28 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
基于jQuery实现左侧菜单栏可折叠功能
Dec 27 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
Vue2.0实现购物车功能
Jun 05 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
vue项目中引入vue-datepicker插件的详解
May 14 Javascript
Vue实现图书管理小案例
Dec 03 Vue.js
使用jquery实现轮播图效果
Jan 02 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
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
yii添删改查实例
2015/11/16 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
JavaScript的setter与getter方法
2017/11/29 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
python八皇后问题的解决方法
2018/09/27 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
人力资源部经理助理岗位职责
2014/03/04 职场文书
室内趣味活动方案
2014/08/24 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python