Проблема с междоменными фреймами в IE8: изменение parent.location приводит к появлению нового всплывающего окна. если на событии клика, это работает как ожидалось - PullRequest
2 голосов
/ 08 июля 2010

У меня много проблем с установлением междоменной связи 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 заставляет открыть новую страницу.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

Разве вы не должны устанавливать parent.location.href вместо parent.location? Я не знал, что последний работал вообще ...

0 голосов
/ 02 апреля 2011

Я думаю, что для старых браузеров вы можете просто загрузить другой iframe внутри iframe и использовать cookie для получения хэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...