Подтвердить что ты не робот

Как предотвратить перезагрузку iframe при перемещении в DOM

У меня есть iframe, загруженный некоторым контентом. Я хотел бы переместить его внутри DOM, не вызывая обновления (мне нравится содержимое внутри него, я хочу сохранить его).

Я делаю базовый node.appendChild(iframe) для выполнения задания.

Возможно ли это?

Заранее благодарим за помощь.

4b9b3361

Ответ 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, добавьте его обратно