我想知道使用“lang”属性有什么意义,以及它与使用meta“Content-Language”标记有什么不同?
请考虑以下代码:
<html lang="en">
<head>
<meta http-equiv="Content-Language" content="en-US">
</head>...
我的假设是浏览器正在读取元标记的值,但DOM关注的是“lang”属性。它是否正确?我不知道有什么细微差别吗?
答案 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 obsolete和lang
代码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"