28

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

例如在我的父母中:

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

在子窗口中我想:

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

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

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

4

2 回答 2

56

更新评论: 如果您在子页面中通过window.open()then 打开窗口,您可以在子页面中设置一个函数作为指向父函数的引用,所以在子页面中有这个:

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; };

这会将您父母中的功能分配为该孩子的目标......如果您愿意,您可以将每个孩子指向不同的功能,它们都是独立的。

于 2010-05-09T12:07:37.727 回答
-3
var newWindow = window.open(window.location.origin);

newWindow.onload = function() {
    $(newWindow.document.body).addClass('new-window-body-class');
};
于 2014-12-23T10:23:48.567 回答