我想知道使用“lang”属性有什么意义,它与使用元“Content-Language”标签有何不同?
考虑以下代码:
<html lang="en">
<head>
<meta http-equiv="Content-Language" content="en-US">
</head>...
我的假设是浏览器正在读取元标记的值,但 DOM 与“lang”属性有关。它是否正确?有什么我不知道的细微差别吗?
我想知道使用“lang”属性有什么意义,它与使用元“Content-Language”标签有何不同?
考虑以下代码:
<html lang="en">
<head>
<meta http-equiv="Content-Language" content="en-US">
</head>...
我的假设是浏览器正在读取元标记的值,但 DOM 与“lang”属性有关。它是否正确?有什么我不知道的细微差别吗?
lang 属性(在 HTML 元素上)指定文档的语言(除非被另一个可以更改文档部分语言的 lang 属性覆盖)。
Content-Language HTTP 标头指定目标受众的语言。这与文档实际编写的语言不同。例如,法语课程的一部分可能包含用法语编写的页面,但 Content-Language 将是en,因为它是为学习法语的英语人士设计的。
从规格:
Content-Language entity-header 字段描述了封闭实体的目标受众的自然语言。请注意,这可能不等同于实体主体中使用的所有语言。
Meta HTTP-equiv 是穷人的 HTTP 标头。它具有真正 HTTP 标头的所有含义,但较少尊重(和支持)。
根据经验,Content-Language 对搜索引擎更感兴趣,而 lang 属性对屏幕阅读器更感兴趣。
它们的含义相同——设置相关内容的语言——但是lang
属性具有更高的优先级。请参阅8.1.2 语言代码的继承。它们处理不同的用例——lang
属性可以<i lang=la>exempla gratis</i>
在单个元素上设置,而Content-Language
标题可以由服务器全局配置以应用于整个文档集。
您的示例显示了设置元素语言的两种等效方法html
,但是由于lang
属性优先,因此值将是"en"
和非"en-US"
。