freakish
freakish

Reputation: 56587

run function from child window in parent window

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?

Upvotes: 0

Views: 3825

Answers (2)

ComFreek
ComFreek

Reputation: 29444

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/

Upvotes: 0

zzzzBov
zzzzBov

Reputation: 179264

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

Upvotes: 1

Related Questions