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检测客户端不是firefox则提示下载
Apr 07 Javascript
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
May 02 Javascript
深入剖析JavaScript instanceof 运算符
Jun 14 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 Javascript
vant自定义二级菜单操作
Nov 02 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
一个显示天气预报的程序
2006/10/09 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
js实现简单扫雷
2020/11/27 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python3实现生成随机密码的方法
2014/08/23 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
pygame实现飞机大战
2020/03/11 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
abstract是什么意思
2012/02/12 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
教师岗位职责范本
2013/12/29 职场文书
运动会广播稿100字
2014/01/11 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS