lang属性和<meta http-equiv =“Content-Language”content =“en-US”/>标记之间有什么区别?

时间:2010-12-14 06:36:19

标签: html http-headers markup lang

我想知道使用“lang”属性有什么意义,以及它与使用meta“Content-Language”标记有什么不同?

请考虑以下代码:

<html lang="en">
    <head>
        <meta http-equiv="Content-Language" content="en-US">
    </head>...

我的假设是浏览器正在读取元标记的值,但DOM关注的是“lang”属性。它是否正确?我不知道有什么细微差别吗?

3 个答案:

答案 0 :(得分:13)

lang属性(在HTML元素上)指定文档的语言(除非用另一个lang属性覆盖,该属性可以更改文档某一部分的语言)。

Content-Language HTTP标头指定目标受众的语言。这与文档实际编写的语言不同。例如,法语课程的一部分可能包含一个用法语编写的页面,但Content-Language将是 en ,因为它是供英语使用者学习法语。

来自the spec

  

Content-Language entity-header字段描述了所包含实体的目标受众的自然语言。请注意,这可能与entity-body中使用的所有语言不同。

Meta HTTP-equiv是穷人的HTTP标头。它具有真正HTTP标头的所有含义,但不太尊重(和支持)。

根据经验,内容语言对搜索引擎更感兴趣,而lang属性对屏幕阅读器更感兴趣。

答案 1 :(得分:7)

HTML5更新meta http-equiv="Content-Language" is obsoletelang代码can be used on all attributes

答案 2 :(得分:3)

它们的意思相同 - 设置相关内容的语言 - 但lang属性具有更高的优先级。见8.1.2 Inheritance of language codes。它们处理不同的用例 - lang属性可以在单个元素上设置<i lang=la>exempla gratis</i>,而Content-Language标题可以由服务器全局配置以应用于整个文档集。

您的示例显示了设置html元素语言的两种等效方法,但由于lang属性优先,因此值为"en"而不是"en-US"