脚本标签中的“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=javascripttype=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控制资源?

【讨论】:

这应该是正确的答案。 languagelang 是不同的属性。 我最近了解到,建议使用 lang 来定义书面语言(英语、西班牙语等),以实现可访问性 - 例如屏幕阅读器。【参考方案4】:

language 是旧属性,type 是新属性。您必须使用过渡(不是肯定的,但相当肯定)doctype 才能合法地使用这两个属性。

【讨论】:

【参考方案5】:

Type 更笼统,指的是脚本块的 mime 编码。据我所知,您只需要一个,并且通常该块无需 type 或 lag 属性即可工作。

我倾向于使用类型。

【讨论】:

【参考方案6】:

lang为脚本语言,type为脚本标签内容的MIME类型。

【讨论】:

【参考方案7】:

基本上,这两个属性都不是必需的。使用它们的唯一原因是验证,这在 HTML5 中已失效。

【讨论】:

以上是关于脚本标签中的“lang”和“type”属性有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

脚本标签和“<%....%>”标签有啥区别?

将javascript放入文件和脚本标签有啥区别?

html5中<head>标签和<header>标签有啥区别

span标签和p标签有啥区别?啥时候用span

html中的name和id有啥区别不同?一般情况下使用哪个?还是两个都用?

html语言里的标签,元素, 属性有啥区别?