2012-02-22 3 views
1

У меня есть пример использования, в котором я экспериментирую - изолировать много разных JS-библиотек для скрытых iframe. На сайте может быть много виджетов, все из одного домена, для которых может потребоваться другая версия js-библиотек. Чтобы предотвратить глобальные конфликты, я подумал, что было бы интересно разместить все необходимые библиотеки в iframe. Так что в одном iframe у меня может быть jQuery 1.7.1, но в других может быть что-то старше. Я хотел бы сделать, чтобы код, выполняющийся на каждом iframe, мог вносить изменения в главное окно. Мне удалось выполнить эту работу, настроив переменную «document» в источнике jQuery, чтобы указать на «var document = top.document».Переадресация jQuery в iframe для изменения родительского документа

Используя этот подход, я смог выполнить в iframe $ ("body") .append ('test ") и изменить его родительский документ.

Может ли кто-нибудь предложить лучший подход к выполнению чего-то подобного? или лучший подход к песочнице?

ответ

0

Если вы не хотите, чтобы изменить JQuery, я считаю, что это работает:

$(document, parent.window.document).contents().find('body').append('test'); 

Таким образом, вы можете использовать LIB JQuery внутри iframe, а также, но если вы скрываете их в любом случае ваше решение, скорее всего, будет более идеальным для ваших целей.

+0

Да, это то, о чем я думал. Я бы предпочел не изменять jQuery, но мне нужно навязчивое решение. Похоже, что jQuery получает документ из window.document, поэтому обертывание другой самообучающейся оболочки, которая устанавливает документ, не будет работать. – zoidberg

Смежные вопросы