JavaScript DOM: перенос элемента между фреймами

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

var dest = $(window.top.document).find('#dest_id');
dest.append($('#source_id'));

Следующее работает нормально:

window.top.document.getElementById('dest_id').innerHTML = document.getElementById('source_id').innerHTML;

Я предполагаю, что существует ограничение на перемещение узлов DOM между кадрами. Есть ли способ обойти это либо в простом js, либо в jquery?

Изменить: может ли это быть как-то связано со свойством ownerDocument? Я попытался изменить его на window.top.document в #dest_id, но это не сработало.

Изменить, аналогичный вопрос: Невозможно добавить дочерний элемент к узлу, созданному из другого фрейма


person EoghanM    schedule 06.05.2010    source источник
comment
По моему опыту, перемещение между кадрами чего-либо, кроме строк и чисел, рискованно. У меня даже были проблемы с перемещением объектов Date между кадрами в некоторых версиях IE.   -  person Pointy    schedule 06.05.2010
comment
var dest = $('#dest_id', window.top.document); работает?   -  person Tomalak    schedule 06.05.2010
comment
Я думаю, что $('#dest_id', window.top.document) эквивалентно $(window.top.document).find('#dest_id') - это тоже не работает.   -  person EoghanM    schedule 07.05.2010


Ответы (1)


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

Гораздо лучшим решением является заставить дочернюю страницу записывать данные, которые вы хотите, чтобы родительская страница получала, в базу данных или какие-либо другие постоянные данные сеанса. Затем вы можете использовать какой-то обратный вызов, чтобы указать родительской странице правильное время для проверки данные сеанса для ваших возвращенных данных. Это гораздо удобнее и не зависит от того, просматриваются ли ваши страницы в определенных контекстах.

Не прямой ответ на ваш вопрос, я знаю. Но есть мое мнение :-)

Удачи!

person majackson    schedule 07.05.2010