一尘不染

在JavaScript中将回调函数设置为新窗口

html

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

例如在父母中,我有:

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

在子窗口中,我要:

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

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

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


阅读 369

收藏
2020-05-10

共1个答案

一尘不染

已更新,以获取注释:
如果您通过来打开窗口,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; };

这会将您父母中的功能分配为该孩子的目标…并且您可以根据需要将每个孩子指向一个不同的功能,因为他们都是独立的。

2020-05-10