Динамический 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×tamp=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 не любил обрабатывать этот сценарий, может быть, какая-то ошибка?
в любом случае спасибо за помощь, это дало мне вдохновение для правильного решения:)