2012-04-30 35 views
8

我不清楚IE对<base>标签的支持。一些文章表明,它只适用于绝对href路径。但它不适用于我。IE不支持基本标记吗?

<base href="http://domain.net/qu/en/" /> 

<a href="sample">Sample Link</a> 

在Chrome和FF,点击链接会带我去http://domain.net/qu/en/sample但在IE9,它带我去http://domain.net/qu/sample

我有一个相对<base>以及尝试这样做,它不会出现上班。

我在IE9.08

+0

''标记''中的第一件事吗?它应该是:) – Daan

+0

@达安:它(起初,我以为你在嘲笑我) – HyderA

+1

嗯,你没有说,这是我认为的第一件事,作为这个问题的一个可能的原因。所以我想我会问。不是故意要碰到我正在带着米奇,对不起!很高兴你现在已经解决了这个问题:) – Daan

回答

14

IE一直支持<base href>。根据规范,只有当href值是绝对URL时才会定义它,尽管一些浏览器甚至在相对URL的情况下也已经解释了它。它必须放在文档的<head>部分;否则浏览器可能会忽略它。基地址只能在文档中设置一次。 (如果违反,浏览器往往会忽略除第一个之外的所有内容)。

在这种情况下,我的猜测是在<base>标记之前有任何标记之外的某个字符。试想一下:

 <base href="http://domain.net/qu/en/" /> 
<a href="sample">Sample Link</a> 

这是因为<base>标记之前的无间断空格字符的无效。在HTML解析中,不是空白字符的不间断空格隐式关闭<head>元素并打开<body>元素。这意味着<base>标签现在位于<body>。某些浏览器仍然可以接受它,但正如Tieson T的答案中所引用的文档所述:“Internet Explorer 7 [和更新版本]严格执行在文档的标头中使用基底标签,并且将忽略错位标签。“

要检查出来,请使用validator - 这将报告其他问题。

+3

你又来了? - 这与UTF-8字节顺序标记问题有关:http://stackoverflow.com/questions/10379827/ie-not-parsing-html-correctly#comment13382020_10379827 – HyderA