У меня много проблем с установлением междоменной связи iframe.
Он работает в Firefox и Chrome, но в Internet Explorer он работает только некоторыми способами:
Если parent.location = 'new_hash';
не включено в событие onClick, это заставляет родительский фрейм открыть новое всплывающее окно. Если это событие onClick, трюк с междоменным идентификатором фрагмента работает. Что дает?
Похоже, мне нужно понять JavaScript ..
Изменить на комментарии: parent.location.href и parent.location имеют одинаковое поведение.
Кажется, это мой специальный браузер IE 8.0.7600.16385, считывающий изменение хеша как всплывающее окно. Я хотел бы услышать, испытал ли кто-нибудь еще что-то подобное.
Создает всплывающее окно в родительском:
<script type="text/javascript">
parent.location = 'http://example.com#new_hash';
</script>
показывает диалоговое окно «заблокировано всплывающих окон» в IE8. Если я разрешу открывать всплывающие окна, они будут бесконечно открывать всплывающие окна.
Не создает всплывающее окно в родительском:
<a onClick="parent.location='http://example.com#new_hash'">clicky</a>
или
$(function() {
$("mybutton").click( function() {
parent.location='http://example.com#new_hash';
});
Не создает всплывающее окно в родительском.
Мой реальный пример
Моему нужно, чтобы parent.location = newhash срабатывал, когда его собственный хэш имеет определенное значение. По сути, у меня есть:
setInterval(function() {
if (location.hash == 'something')
{
parent.location='http://example.com#new_hash';
}
}, 500);
Что происходит? Как я могу решить эту проблему? Почему это работает, когда привязано к событию click, но нет, если оператор выполняется сам по себе? Конкретный пример, над которым я работаю, - http://www.grovemade.com/products/test, v.04
.
Я тут активно балуюсь, так что это может устареть ..
В Firefox и Chrome, родительский фрейм изменяется с отсутствия хэша на # xdm-success, на # handshake-complete.
В IE8 # xdm-success заставляет открыть новую страницу.
Спасибо!