Возможно ли скопировать функцию (или любой объект в этом случае) из одного контекста окна в другой в Javascript?Копирование объекта функции из одного окна в другое
Предположим, у меня есть родительский окно с рама в нем. Кадр определяет функцию foo()
, которую я хотел бы скопировать во внешнее окно. (Одна из причин, чтобы сделать это было бы так, что foo()
доступна, когда кадра документа переходит к другому URL.)
Я знаю, что может легко создать ссылки на foo()
в родителя делая
function foo() { ... }
parent.foo = foo;
Но с этим методом foo()
до сих пор живет в рамке документа, и не будут доступны для родителя должен Рамка разгрузить.
Я знаю, что я могу создать новую функцию в родителя с помощью конструктора Function:
parent.foo = new parent.Function(" ... ");
Однако, это требует, чтобы у меня моя функции в виде строки JS.
DOM поддерживает перемещение узлов из одного документа в другой посредством importNode()
. Есть ли у Javascript аналогичная функция?
Не было бы лучше просто написать функцию javascript внутри родителя? Рамка всегда будет иметь доступ к родительскому элементу. Таким образом, вы можете использовать функцию в родительском или кадре. Или я не понимаю? –
Теоретически это возможно, но в моем случае есть некоторые ограничения. В частности, мой сценарий иногда включается в документ фрейма, и я не хочу ограничивать его. – levik
@levik: просто введите функцию в родительском элементе и * вытяните * его в кадр (вместо того, чтобы нажимать на родителя). Таким образом, если кадр выгружается, копия родителя все еще жива и хорошо. –