2012-05-25 2 views
0

Я установил href -Attribute <a ...> -Tag динамически в проекте. В какой-то другой момент я проверяю DOM-свойствопод названием hostname, чтобы выяснить, является ли это внутренней ссылкой.IE забывает имя хоста A-Tag после изменения HREF

В принципе, это то, что происходит.

<!--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 обновлением «hostname» -Property a -DOM-Element.

ответ

2

Вам придется копить и заново установить его, кажется:

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

Похоже, это единственная возможность, на самом деле. Тем не менее, в моем случае я решил продлить проверку, поэтому пустая строка 'hostname' будет обрабатываться одинаково на' (d.hostname == location.hostname) ', которая будет работать нормально, если у вас нет базы href установлен в другой домен. – Lukx

+0

Это была моя проблема. Damn IE ... –

+0

Как насчет свойства 'host' (включая порт)? Это ведет себя так же? – sompylasar

Смежные вопросы