Внедрить функцию javascript в родительское окно из iframe - PullRequest
1 голос
/ 02 марта 2012

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

Есть ли способ определить объект сверху, который будет доступен измои iframe даже после того, как оригинальный iframe выходит из области видимости?

Ответы [ 5 ]

2 голосов
/ 27 августа 2013

Мы столкнулись с этой проблемой и этим вопросом и в конечном итоге решили ее, создав тег script в заголовке родительского документа.

Поэтому вместо

window.parent.myfunc = function(){...}

мы сделали

var script = window.parent.document.createElement('script');
script.text = "var myfunc = function(){...}";
window.parent.document.getElementsByTagName('head')[0].appendChild(script);

Немного отвратительно, но это работает.

2 голосов
/ 02 марта 2012

Вы можете объявить функцию как член родительского окна iframe:

window.parent.func = function() {alert("test")};

Их будет видно каждому фрейму:

window.parent.func();
1 голос
/ 23 октября 2014

Вы можете создать функцию по ее конструктору в родительском окне.В этом случае ссылка на функцию остается в родительском окне и может вызываться из всех iFrames

parent.func = new parent.Function('a','b','alert(a+b);');

Это будет видно из каждого iFrame

parent.func(3,4);
1 голос
/ 20 марта 2012

На случай, если кто-то еще наткнется на это. Я обнаружил, что функции Javascript хранятся в виде ссылок, поэтому определение top.func = function () {...} из iframe создаст ссылку на функцию сверху. Это означает, что если iframe потерян, то функция тоже.

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

0 голосов
/ 02 марта 2012

Одним из решений может быть передача их с использованием строки запроса src iframe или сохранение объекта в сеансе сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...