запустить функцию из дочернего окна в родительском окне - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть два окна: parent и popup.Очевидно, parent имеет ссылку на popup.Теперь в popup у меня есть функция сказать

function test() { alert('test'); }

, и я хочу вызвать эту функцию в parent, что-то вроде popup.test();.Есть способ сделать это?Я знаю, как сделать это наоборот.Просто объявление

window.test = function() { alert('test'); }

и вызов window.opener.test(); во всплывающем окне работает нормально.Однако в моем случае это не работает (я думаю, что объект window.opener является ссылкой, но window.open и window в popup на самом деле не связаны).Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Это действительно зависит от контекста, в котором вы определили функцию для всплывающего окна. Предполагая, что вы прикрепили функции / данные к объекту window всплывающего окна, вы можете получить к нему доступ из дескриптора окна, возвращаемого window.open (дескриптор окна равен объект window для всплывающего окна ):

var w = window.open(somelocation,''); //has a function on `window` called "test"
w.test();

Я предполагаю, что вы понимаете, как работают песочницы безопасности для всплывающих окон

0 голосов
/ 16 ноября 2011

Объявите test() в вашем всплывающем окне следующим образом:

window["test"] = function()
{
  alert("It works!");
}

Затем откройте всплывающее окно в главном окне:

var popup = window.open("popup.html", "The popup");

И вызовите свою функцию:

popup.window.test();

jsFiddle (не будет работать без /show из-за междоменного ограничения!): http://jsfiddle.net/szK3F/show/

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