script标签属性type与language使用选择


Posted in Javascript onDecember 02, 2012

被人问起一个问题:

<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 相关文章推荐
javascript function、指针及内置对象
Feb 19 Javascript
js 鼠标点击事件及其它捕获
Jun 04 Javascript
网页禁用右键实现代码(JavaScript代码)
Oct 29 Javascript
js实现拖拽 闭包函数详细介绍
Nov 25 Javascript
js表单验证实例讲解
Mar 31 Javascript
Bootstrap CSS布局之图像
Dec 17 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
vue中组件通信的八种方式(值得收藏!)
Aug 09 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 #Javascript
json对象转字符串如何实现
Dec 02 #Javascript
javascript 构造函数强制调用经验总结
Dec 02 #Javascript
js精度溢出解决方案
Dec 02 #Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 #Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 #Javascript
javascript控制swfObject应用介绍
Nov 29 #Javascript
You might like
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
python实现媒体播放器功能
2018/02/11 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
Python类的动态绑定实现原理
2020/03/21 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
教育局长自荐信范文
2013/12/22 职场文书
网上书店创业计划书
2014/01/12 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
事假请假条范文
2014/04/11 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers
MySQL主从切换的超详细步骤
2022/06/28 MySQL
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python