问题
I have two windows: the parent and the popup. Obviously parent has a reference to popup. Now in popup I have a function say
function test() { alert('test'); }
and I want to call this function in parent, something like popup.test();. Is there a way to do that? I do know how to do that the other way around. Just declaring
window.test = function() { alert('test'); }
and calling window.opener.test(); in popup works fine. However this does not work in my case (I think because the window.opener object is a reference, but window.open and window in popup are not really related). Any ideas?
回答1:
It really depends on the context where you defined the function for the popup window. Assuming you attached the functions/data to the window object of the popup window, you can access it from the window handle returned by window.open (the window handle is the window object for the popup):
var w = window.open(somelocation,''); //has a function on `window` called "test"
w.test();
I'm going to assume that you understand how security sandboxes work for popup windows
回答2:
Declare test() in your popup as follows:
window["test"] = function()
{
alert("It works!");
}
Then open your popup from your main window:
var popup = window.open("popup.html", "The popup");
And call your function:
popup.window.test();
jsFiddle (won't work without the /show because of the cross-domain restriction!): http://jsfiddle.net/szK3F/show/
来源:https://stackoverflow.com/questions/8152829/run-function-from-child-window-in-parent-window