Динамический iframe не загружается иногда в Firefox

у меня есть код JavaScript, который динамически вводит iframe на данной HTML-странице. К сожалению, в Firefox, и только в Firefox, хотя iframe создается время от времени соответствующий URL-адрес не загружается в него.

Я знаю, что он не был загружен, потому что соответствующий URL-адрес не отображается на вкладке Firebug Net, и когда я проверяю iframe, я не вижу ожидаемого HTML-кода там (когда iframe находится в том же домене, что и внешняя страница). Я не вижу JavaScript или сетевые ошибки.

вот фрагмент кода, я проверил все соответствующие переменные правильно:

    var iframe = document.createElement("iframe");
    iframe.width = options["w"];
    iframe.height = options["h"];
    iframe.scrolling = "no";
    iframe.marginWidth = 0;
    iframe.marginHeight = 0;
    iframe.frameBorder = 0;
    iframe.style.borderWidth = 0;

    if (node.childNodes.length > 0) 
        node.insertBefore(iframe, node.childNodes[0]);
    else 
        node.appendChild(iframe);

    iframe.contentWindow.location = iframeSrc + "?" + querystring;

вот пример URL, который установлен для iframe (проблема также воссоздается, когда URL указывает на внешний сервер, должен был опустить "http: / /" в начале, иначе я не мог опубликовать вопрос):

127.0.0.1:8000/widget/iframe/index.html?style=slide-top-to-bottom&culture_code=en_us&c=26&sc=1324&title=Top%20News&caption=Top%20Stories&order=relevance&count=20&w=250&h=300&timestamp=true&scrollbar=false&theme=ui-lightness&className=8815455464592103&referrer=http%3A%2F%2F127.0.0.1%3A8000%2Fwidget%2Fbuilder%2Findex.html

делая некоторые исследования в Интернете, я нашел эту незафиксированную ошибку Firefox, которая, кажется, связана с этим вопрос: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

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

  • настройка iframe.src вместо iframe.contentWindow.местоположение
  • добавление случайного параметра в строку запроса
  • добавление символа " # " со случайным числом в конце URL
  • предоставление iframe случайное имя

кто-нибудь есть обходной путь для этой раздражающей ошибки Firefox? Или проблема, которую я описываю, не связана с ошибкой и имеет другое решение?

2 ответов


что будет, если добавить в конец сценария?

iframe.contentWindow.location.reload(true);

возможно, это остановит необходимость перезагрузки в FF.

редактировать

исправлен пример


решил проблему, я искал не в том месте. HTML-файл, в который был загружен этот динамический iframe, имел пустой тег iframe, который был удален из DOM, после чего вместо него был введен динамический iframe.

по-видимому, Firefox кэшировал последний URL для этого iframe и загрузил его сразу же после загрузки внешней страницы. Я знаю, потому что видел, как соответствующий HTML-файл загружается дважды на вкладке Firebug Net, а не один раз при инъекции.

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

в любом случае спасибо за помощь, это дало мне вдохновение для правильного решения:)