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 相关文章推荐
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
vue中设置、获取、删除cookie的方法
Sep 21 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 Javascript
小程序富文本提取图片可放大缩小
May 26 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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
PHP制作图型计数器的例子
2006/10/09 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
详解vue在项目中使用百度地图
2019/03/26 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
python 字典(dict)按键和值排序
2016/06/28 Python
python线程、进程和协程详解
2016/07/19 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
Linux文件系统类型
2012/02/15 面试题
数控技术应届生求职信
2013/11/13 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
单位活动策划方案
2014/08/17 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers