Это не должно иметь ничего общего с той же политикой происхождения.
То же самое можно увидеть в Google Chrome. Оба используют WebKit, поэтому, возможно, ключом к этой проблеме является интерфейс DOM WebKit.
Запуск JS в вопросе в Chrome не меняет хосты в ссылках. Ни отладчик JS, ни консоль JS не сообщают о каких-либо проблемах.
Попытки изменить свойство anchor.host вызывают:
- ошибок не сообщается
- без изменений в свойстве anchor.host
Это говорит о том, что свойство anchor.host по какой-то причине доступно только для чтения.
Свойство anchor.href выглядит доступным для записи, так что это, вероятно, ваш лучший вариант. Следующий код будет работать :
var ndomain = document.domain;
var mydomain = 'www.foo.com';
var alink = document.getElementsByTagName('a');
for (var i = 0; i < alink.length; i++) {
if (alink[i].href.length > 0){
if (alink[i].host.substr(0, mydomain.length) == mydomain){
var currentHref = alink[i].getAttribute('href');
var newHref = '';
// Generate newHref based on currentHref and setting host as required
alink[i].setAttribute('href', newHref);
}
}
}