在JavaScript中设置一个callback函数到一个新的窗口

有没有一种简单的方法来设置一个“callback”function,以在JavaScript中打开的新窗口? 我想从新窗口中运行父function,但我希望父母能够设置此特定function的名称(所以它不应该在新的Windows页面硬编码)。

例如在父母我有:

function DoSomething { alert('Something'); } ... <input type="button" onClick="OpenNewWindow(linktonewwindow,DoSomething);" /> 

在子窗口中,我想:

 <input type="button" onClick="RunCallbackFunction();" /> 

问题是如何创build这个OpenNewWindowRunCallbackFunction函数。 我虽然关于发送函数的名称作为查询参数到新窗口(其中服务器端脚本在生成的孩子的HTML中生成适当的函数调用),这是有效的,但我想在是否有另一种或更好的方式来完成这可能是一些甚至不需要服务器端修补的东西。

纯粹的JavaScript,服务器端解决scheme和jQuery(或其他框架)都欢迎。

更新的意见:如果你打开你的窗口通过window.open()然后在你的子页面中,你可以设置一个函数在孩子只是一个指向父函数的引用,所以有这个在子页面:

 var RunCallbackFunction = function() { }; //reference holder only 

然后在你的父母(开瓶器),设置该function时,该子窗口加载,如下所示:

 //random function you want to call function myFunc() { alert("I'm a function in the parent window"); } //to actually open the window.. var win = window.open("window.html"); win.onload = function() { win.RunCallbackFunction = myFunc; }; 

这将父项中的函数赋值为该子项的目标…并且如果您愿意,可以将每个子项指向一个不同的函数,它们都是独立的。

 var newWindow = window.open(window.location.origin); newWindow.onload = function() { $(newWindow.document.body).addClass('new-window-body-class'); };