【发布时间】:2019-09-13 11:03:49
【问题描述】:
我对浏览器中<link rel="alternate" ...> 的行为有点困惑,我正在寻找一些说明。让我们用下面的代码来说明:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="a.css" type="text/css"
title="Main Stylesheet">
<link rel="alternate stylesheet" href="b.css" type="text/css"
title="Alternative Stylesheet">
<link rel="alternate" href="fr.pdf" hreflang="fr" type="application/pdf"
title="Alternative document in French">
</head>
<body>
</body>
</html>
当此代码在现代浏览器(例如 Firefox v27.01)中运行时,浏览器会解析上述 HTML 文档,然后下载样式表、a.css 和 b.css。前者用于将样式应用于文档。但是,b.css 可以通过上述浏览器的“查看 > 页面样式”菜单获得。因此,显然 Firefox 中的解析器能够识别“替代”样式表,并在这种情况下决定下载它。
可以在W3C > HTML5 > 4.8.4.1 阅读,解析这些<link>s 的结果基本上是引用相应文档的超链接。在样式表的情况下,浏览器也足够聪明,可以下载它。但是,对于我们示例中的另一个替代文档(fr.pdf),Firefox 似乎没有下载它,如果它链接它,它在任何地方都不可见。我在 Chrome (v.33.0.1750.117)、Opera (v.19.0.1326.63)、IE (v.10.0.9200.16798) 中进行了测试,并且可以观察到同样的事情(即没有可见的工件与 fr.pdf 已链接)。因此,由于所有这些现代浏览器的行为都是这样,看来我误解了“备用”关系的含义:) 有人能解释一下它们的用途吗?我的信念是,以 RESTful 方式,用户代理应该能够(超)链接所有 <link>s 以便导航该网络。
提前致谢。
【问题讨论】:
-
我不确定 PDF 是否可以作为样式表被浏览器读取,这正是该代码似乎建议/尝试完成的。不过,
<link rel=alternate>只加载文件,因此您需要 CSS 来确定何时显示备用文件。 -
@TylerH 感谢您的及时回复,但是,pdf 链接只有“替代”关系。它不与样式表一起使用。 b.css 具有“备用样式表”关系。也许你因为我的缩进很差而混淆了线条:)
-
我想既然你声明了
lang=fr,你需要尝试加载网站,将浏览器的语言设置为fr。你试过这个吗? -
是的,但是将浏览器的首选语言更改为 FR 只会产生在请求 HTML 文档时将“Accept-Language”设置为 FR 的预期效果,并且服务器端可以对此做出反应.为了实验,我试了一下,没有任何变化。