在更改HREF后,IE忘记了A-Tag的主机名

时间:2012-05-25 14:11:44

标签: javascript internet-explorer dom

我在项目中动态设置href - <a ...> - 标签的属性。在其他方面,我检查<a>的名为hostname的DOM-Property,以确定它是否是内部链接。

基本上,这就是发生的事情。

<!--HTML-->
<a id="my" href="/my/first/link">MyLink</a>
<div id="log"></div>

JS是:

// js
var a = document.getElementById( 'my' ),
    log = document.getElementById( 'log' );

log.innerHTML += a.hostname + '<br/>';

a.setAttribute('href',"/my/other/link");
log.innerHTML += a.hostname;

(参见这个小提琴:http://jsfiddle.net/RurQT/

当我将d.href设置为相对路径时,我希望d.hostname保持不变 - 因此log - Div包含两次相同的主机名。这在FF和Chrome中是正确的。

然而,InternetExplorer 7,8和9都坚持第二次,主机名是空的。

我特别困惑,因为第一个链接一直是相对的!我没有任何<base href>设置,顺便说一句。

我非常感谢任何有关如何让InternetExplorer更新“{1}} - DOM-Element的”主机名“属性的建议。

1 个答案:

答案 0 :(得分:2)

你似乎必须藏匿并重新设置它:

var d = document.getElementById( 'my' ),
var h = d.hostname
d.setAttribute('href',"/my/other/link");
d.hostname = h