<link rel = alternate>在浏览器中的行为

Gro*_*alo 5 html rest http hateoas

我对<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>
Run Code Online (Sandbox Code Playgroud)

当此代码在现代浏览器(例如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以便浏览该Web。

提前致谢。

Ste*_*mas 3

该<link>元素确实标识了与当前文档相关的外部文档。该rel属性指定了该关系的性质。在特定情况下rel="alternate stylesheet"(某些)浏览器可以对链接执行特定操作。特别是,Firefox 和 Opera 使用户有机会从应用程序的菜单中选择此“备用”样式表。例如,参见屏幕截图

从这篇文章。

为了应用该样式表,浏览器需要下载它。

在更一般的情况下rel="alternate"(不是样式表),浏览器将不知道与相关链接有关的任何有用的信息。因此,就浏览器而言,无需下载。