Как предотвратить перезагрузку iframe при перемещении в DOM
У меня есть iframe, загруженный некоторым контентом. Я хотел бы переместить его внутри DOM, не вызывая обновления (мне нравится содержимое внутри него, я хочу сохранить его).
Я делаю базовый node.appendChild(iframe)
для выполнения задания.
Возможно ли это?
Заранее благодарим за помощь.
Ответы
Ответ 1
Если вы пытаетесь переместить его визуально, вы можете попробовать изменить CSS, чтобы использовать абсолютное позиционирование или некоторые другие настройки.
Однако, если вы пытаетесь вытащить его из DOM и вставить в другое место, вы не сможете избежать перезагрузки.
Ответ 2
Я так не думаю, так как браузер собирается повторно отобразить/перезагрузить iframe, когда он вернется в DOM.
http://polisick.com/moveNode.php лучше объясняет это.
Чтобы переместить node, вы вызываете removeNode, чтобы вытащить его из дерева и в память, а затем appendNode, чтобы "вставить" его туда, где вы хотите.
Ответ 3
У меня была аналогичная проблема с iFrame в диалоговом окне jQueryUI. jQuery перемещает div (содержащий мой iFrame) из DOM, и поскольку мне все еще нужны обратные вызовы (duh), мне пришлось переместить его обратно. Прочитав это и несколько других сообщений, я придумал решение.
Простая идея, которую я заметил, это перезагрузка iFrame при ее перемещении. Итак, я добавил iFrame в контейнер диалога (div) после перемещения div обратно в DOM. Это работает, потому что jQuery не заботится о том, что в контейнере. Вот пример кода:
Функции открытия/закрытия диалога:
открыть:
function () {
$(this).parent().appendTo("form").css("z-index", "9000"); //Move the div first
$(this).append('<iframe id="iFrame" allowtransparency="true" frameborder="0" width="100%" height="100%" src="somePage.aspx"></iframe>');}, //then add the iframe
}
закрыть:
function() {
$(this).empty(); //clear the iframe out because it is added on open,
//if you don't clear it out, you will get multiple posts
$(this).parent().appendTo("divHidden"); //move the dialog div back (good house-keeping)
}
HTML:
<div id="divHidden" style="display: none">
<div id="dialog" style="display: none">
</div>
</div>
Ответ 4
вам нужно сохранить 'Html' node под iframe и после того, как вы переместили iframe, добавьте его обратно