是否有一种简单的方法可以将“回调”函数设置为在JavaScript中打开的新窗口?我想从新窗口运行父函数,但是我希望父母能够设置此特定功能的名称(因此不应在新的Windows页面中进行硬编码)。

例如,在父母中,我有:

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

在孩子窗口中,我想:

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

问题是如何创建这个 OpenNewWindowRunCallbackFunction 职能。我虽然要将函数的名称作为查询参数发送到新窗口(服务器端脚本在生成的儿童的html中生成适当的函数调用),但我正在考虑是否有另一种或更好的方法来完成这,也许甚至不需要服务器端修补的东西。

纯JavaScript,服务器端解决方案和jQuery(或其他框架)都受到欢迎。

有帮助吗?

解决方案

更新以评论: 如果您正在通过 window.open() 然后,在您的孩子页面中,您可以在孩子中设置一个函数,以作为指向父函数的引用,因此请在“子”页面中:

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

然后在您的父级(开瓶器)中设置该功能时,如这样,

//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');
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top