我正在努力升级一个非常古老的企业内部网。我们的用户在IE8和IE9上。我们的大多数网站都是用IE5开发的 - IE9。
我们即将升级所有人升级到IE11,飞行员发现了大量的兼容性问题。未来几个月将会有大量的补救措施,以及明智地使用企业模式,兼容模式,X-UA标签等。
但是我遇到了一个没有任何意义的奇怪问题。这似乎是一个错误,但是:
如果您的网页包含两个链接的样式表,并且两个标记都具有title
属性,则不应用第二个样式表中定义的样式,除非(a)标题属性完全匹配,或者(b)其中一个标题属性为空。
例如:
如果您的<link>
代码具有相同的title
属性,那么一切正常:
<link REL="stylesheet" HREF="a.css" TYPE="text/css" TITLE="1">
<link REL="stylesheet" HREF="b.css" TYPE="text/css" TITLE="1">
如果其中一个title
属性为空,则一切正常:
<link REL="stylesheet" HREF="a.css" TYPE="text/css" TITLE="1">
<link REL="stylesheet" HREF="b.css" TYPE="text/css" TITLE="">
如果其中一个标签没有TITLE属性,那么一切正常:
<link REL="stylesheet" HREF="a.css" TYPE="text/css" TITLE="1">
<link REL="stylesheet" HREF="b.css" TYPE="text/css">
但是......如果title
属性中有不同的值,则不会应用第二个样式表。
<link REL="stylesheet" HREF="a.css" TYPE="text/css" TITLE="1">
<link REL="stylesheet" HREF="b.css" TYPE="text/css" TITLE="2">
我已经辞职了,因为我们必须扫描Intranet上的每个最后一页,查找title
个<link>
标签附带title
个属性的网页,但我真的很想了解为什么会这样。最有趣的是,这种情况发生在我尝试过的每一个现代浏览器中。如果强制IE11进入企业模式或Compat View,问题就会消失。
除了从<link>
代码中移除{{1}}属性之外,还有人可以解释发生了什么,或提出解决方案吗?
答案 0 :(得分:9)
这似乎是预期的行为。例如,来自MDN docs
首选样式表[...]是为
stylesheet
属性提供rel
值的样式表,以及title
属性的任何值。以下是两个例子:<link type="text/css" rel="stylesheet" title="Basic styles" href="basic.css" /> <link type="text/css" rel="stylesheet" title="Fish and boats" href="ocean.css" />
根据HTML 4.01规范,一次只能使用一个首选样式表。因此,给定上面的示例,只有两个首选样式表中的一个将应用于文档。规范没有提供决定应该使用哪一个的程序,因此用户代理可以随意做出他们喜欢的任何选择。
答案 1 :(得分:5)
来自the spec
title属性给出了链接的标题。除了一个例外,它纯粹是建议性的。值是文本。样式表链接例外,其中title属性定义了替代样式表集。
浏览器可以(我不知道有任何更多内容,但extensions可用)提供一个UI,允许用户在作者为页面提供的不同样式表之间切换。
title属性用于对样式表进行分组以供选择(并为它们提供标签)。
遇到的第一个样式表将用于确定默认使用哪个组。