将回调函数设置为JavaScript的新窗口
-
04-10-2019 - |
题
是否有一种简单的方法可以将“回调”函数设置为在JavaScript中打开的新窗口?我想从新窗口运行父函数,但是我希望父母能够设置此特定功能的名称(因此不应在新的Windows页面中进行硬编码)。
例如,在父母中,我有:
function DoSomething { alert('Something'); }
...
<input type="button" onClick="OpenNewWindow(linktonewwindow,DoSomething);" />
在孩子窗口中,我想:
<input type="button" onClick="RunCallbackFunction();" />
问题是如何创建这个 OpenNewWindow
和 RunCallbackFunction
职能。我虽然要将函数的名称作为查询参数发送到新窗口(服务器端脚本在生成的儿童的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');
};
不隶属于 StackOverflow