2

我在项目中动态设置href-Tag 的<a ...>-Attribute。在其他时候,我检查了<a>名为 的 DOM-Property hostname,以确定它是否是内部链接。

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

<!--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 更新a-DOM-Element 的“主机名”-Property 的建议。

4

1 回答 1

4

您必须隐藏并重新设置它:

var d = document.getElementById( 'my' ),
var h = d.hostname
d.setAttribute('href',"/my/other/link");
d.hostname = h
于 2012-05-25T14:45:51.570 回答