script标签属性用type还是language?

被人问起一个问题:

<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" 属性。

时间: 2024-07-29 00:16:29

script标签属性用type还是language?的相关文章

1关于script标签属性,注意点,浏览器文档模式

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title></title></h

&lt;script&gt;标签里面的属性详解

1. <script>标签里面,4.01时候定义了6个属性,有:defer async charset language src  type 2. defer属性:脚本立即下载但延迟到文档被解释和执行之后才执行,在HTML5里面虽然规定了脚本要按照它们出现的顺序来执行,但实际上,延迟脚本不一定会按照顺序执行,所以最好只出现一个延迟脚本.现在大多数支持HTML5的浏览器会忽略这个属性,像正常一样处理延迟脚步,最好还是把延迟脚步放在</body>前面. 3.async属性: 表示立即下

如何将 JavaScript 代码添加到网页中,以及 &lt;script&gt; 标签的属性

Hello, world! 本教程的这一部分内容是关于 JavaScript 语言本身的. 但是,我们需要一个工作环境来运行我们的脚本,由于本教程是在线的,所以浏览器是一个不错的选择.我们会尽可能少地使用浏览器特定的命令(比如 alert),所以如果你打算专注于另一个环境(比如 Node.js),你就不必多花时间来关心这些特定指令了.我们将在本教程的下一部分中专注于浏览器中的 JavaScript. 首先,让我们看看如何将脚本添加到网页上.对于服务器端环境(如 Node.js),你只需要使用诸如

javascript正则找script标签, link标签里面的src或者 href属性

1. [代码]javascript 简单的search    <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(?:\s|.)*?)(?:(?:\/\>)|(?:\>\s*?\<\/script\>)) <script  src="sdfsdf/sdfd.js"          type="text/javascript"  /><scr

script标签中type为&lt;script type=&quot;text/x-template&quot;&gt;是个啥

写过一点前端的都会碰到需要使用JS字符串拼接HTML元素然后append到页面DOM树上的情况,一般的写法都是使用+号以字符串的形式拼接,如果是短点的还好,如果很长很长的话就会拼接到令人崩溃了. 比如有的时候需要使用弹出框的时候手动使用字符串拼接起来各种数据再渲染出来(这种写法太恶心了,简直没有职业道德-). 因为上面的这种写法太恶心人了,但是在前端渲染数据又是一个刚需,这个时候怎么办,想一个办法将JS和HTML分离开来. <script type="text/x-template&quo

在HTML中使用JavaScript之&lt;script&gt;标签及属性

在HTML页面中加入JavaScript最主要的方法就是使用<script>:包含外部的JavaScript文件和在页面中直接嵌入JavaScript代码. <script>的属性 <script>包含属性:async 表示应该立即下载外部脚本,defer表示脚本可以延迟外部js到DOM文档完全被解析和显示后再执行,src引入外部文件,type表示脚本的内容类型(MIME类型)text/javaScript: <script>书写格式 <script&

script标签中defer和async属性的区别

script标签存在两个属性,defer和async,因此script标签的使用分为三种情况: 1.<script src="example.js"></script> 没有defer或async属性,浏览器会立即加载并执行相应的脚本.也就是说在渲染script标签之后的文档之前,不等待后续加载的文档元素,读到就开始加载和执行,此举会阻塞后续文档的加载: 2.<script async src="example.js"></

CSS和Java script 标签style属性对照表

CSS和Java script 标签对照表 盒子标签和属性对照 CSS语法 (不区分大小写) Java script 语法 (区分大小写) border border border-bottom borderBottom border-bottom-color borderBottomColor border-bottom-style borderBottomStyle border-bottom-width borderBottomWidth border-color borderColor

script标签里的defer属性

入职新公司,看代码的时候注意到有的script标签中有一个defer属性,查了一下.在这里分享出来. 需要注意的有三点,其中前两点是在错误中分辨出来的: 错误来源:http://www.w3school.com.cn/tags/att_script_defer.asp 1,defer属性只有IE支持:应该说是在主流浏览器都是支持的: http://www.runoob.com/tags/att-script-defer.html 中说了,在所有主流浏览器都支持defer属性:在Chrome,FF