脚本标签中的“lang”和“type”属性有啥区别?
Posted
技术标签:
【中文标题】脚本标签中的“lang”和“type”属性有啥区别?【英文标题】:What is the difference between "lang" and "type" attributes in a script tag?脚本标签中的“lang”和“type”属性有什么区别? 【发布时间】:2010-09-11 20:47:46 【问题描述】:对于<script>
html 标签,lang=javascript
和type=text/javascript
之间的技术区别是什么?
我通常同时使用这两种方法,因为我一直认为旧版浏览器需要其中一种。
【问题讨论】:
【参考方案1】:根据HTML 4.01 Spec:
类型: 此属性指定元素内容的脚本语言并覆盖默认脚本语言。脚本语言被指定为内容类型(例如,“text/javascript”)。作者必须为此属性提供一个值。该属性没有默认值。
语言:已弃用。此属性指定此元素内容的脚本语言。它的值是语言的标识符,但由于这些标识符不是标准的,因此该属性已被弃用,取而代之的是类型。
【讨论】:
请注意,type
在 HTML 5 中不再需要。如果缺少,则默认值为 text/javascript
。 (w3.org/html/wg/drafts/html/master/…)【参考方案2】:
<script language="">
可用于为 VBScript 和不同版本的 Javascript 提供服务。
除非您需要特定版本的 Javascript,否则不要使用语言属性,没有它您的代码仍然可以正常工作。
即使您确实需要某些代码的特定 Javascript 版本,也请尝试使用 (typeof window.blah.feature != "undefined") 检查来测试该功能是否存在。
以下是语言属性的用法示例: http://bclary.com/2004/08/27/javascript-version-incompatibilities
由于这种定义松散或不确定的行为,不推荐使用语言属性。
type 属性完全不同。它告诉浏览器脚本是什么 mime 类型,并且应该始终在脚本标签中指定。
【讨论】:
【参考方案3】:OP 专门说“语言”而不是“语言”。更老的“语言”标签应该是 Javascript 或 VBScript。
但是 current 和看似有效的 "lang" 标签实际上是 书面 语言,如英语、西班牙语, 日本人。 Microsoft 的 Visual Studio 为“lang”的值提供了一个下拉列表,它们都类似于 en-us、fr、ja 等。对于英语美国、法语、日语等......
我认为如果您有一个复杂的多语言设置,可能是使用此标签的正当理由 - 也许有一个内容管理系统可以支持这一点,然后提供正确的 javascript 文件 - 比如jQuery控制资源?
【讨论】:
这应该是正确的答案。 language 和 lang 是不同的属性。 我最近了解到,建议使用 lang 来定义书面语言(英语、西班牙语等),以实现可访问性 - 例如屏幕阅读器。【参考方案4】:language 是旧属性,type 是新属性。您必须使用过渡(不是肯定的,但相当肯定)doctype 才能合法地使用这两个属性。
【讨论】:
【参考方案5】:Type 更笼统,指的是脚本块的 mime 编码。据我所知,您只需要一个,并且通常该块无需 type 或 lag 属性即可工作。
我倾向于使用类型。
【讨论】:
【参考方案6】:lang为脚本语言,type为脚本标签内容的MIME类型。
【讨论】:
【参考方案7】:基本上,这两个属性都不是必需的。使用它们的唯一原因是验证,这在 HTML5 中已失效。
【讨论】:
以上是关于脚本标签中的“lang”和“type”属性有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章