IE8 перезагружает динамический контент iframe из кэша в неправильный iframe - PullRequest
4 голосов
/ 23 декабря 2011

У меня есть страница с несколькими фреймами. Каждый iframe вызывает некоторый javascript, который динамически записывает новые iframe в документ родительского окна.

Это прекрасно работает при загрузке первой страницы. Но если страница обновляется в IE8 (и более ранних версиях), один из динамически генерируемых iframes будет загружен из кэша в один из жестко запрограммированных слотов на родительской странице. Смотрите следующий пример:

http://www.risingspiral.com/ie8-iframe-refresh/

При обновлении в IE8 (может потребоваться пара попыток) Spot 2_ будет загружен из кэша в iframe spot3.html. spot3.html не будет вызван вообще.

Я уже защищен от проблемы динамического обновления iframe в IE, описанной здесь:

http://buildingonmud.blogspot.com/2010/06/ie-iframe-refresh-and-back-button.html

Но, похоже, проблема все еще существует. Также интересно, что проблема всегда возникает (по крайней мере для меня) между iframes spot2.html и spot3.html.

Я пробовал кучу разных конфигураций, чтобы попытаться обойти эту проблему. Итак, я ищу новые предложения.

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 14 июня 2013

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

После некоторых попыток я решил обновить кадры после тайм-аута.Это лучшее решение, которое я нашел.

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
   var ieversion=new Number(RegExp.$1);
   if (ieversion<=8){
        setTimeout(function(){
              iframeReload();
        }, 1000);

        function iframeReload() {
            $("iframe").each(function(index) {
                $(this)[0].src = $(this)[0].src;
            });
        }
   }
}
0 голосов
/ 01 апреля 2014

У меня была та же проблема, и я исправил ее, создавая каждый раз iframe с другим идентификатором (тестировался только на IE11, но, надеюсь, это решит проблему во всех версиях):

iframe.id = iframe.name = "iframe$" + Math.floor(Math.random() * new Date().getTime());

Обратите внимание, что установка имени может не иметь никакого эффекта (для проверки; я могу только сказать, что установка имени только не решает проблему)

0 голосов
/ 03 сентября 2012

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

После нескольких часов борьбы с этим я обнаружил, что это всего лишь <ошибка обновления IE8, и если на страницу переходят по ссылке или через ввод URL-адреса в адресную строку, все работает как положено. Поэтому, если вы не обновите страницу или не введете ее снова, введя адрес, у вас все будет в порядке. </p>


Обновление:

Проблема, похоже, решена путем повторной установки атрибута SRC в iframe, например

 iframe.src = iframe.src;

Кажется, это заставляет

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