8

我有一个日历,当我单击 时<td>,会出现一个弹出窗口,您可以在所选日期创建您的活动。我想添加一个功能。

当用户完成创建事件时,我想向父页面发送一个 JavaScript 请求,以便我可以使用 AJAX 刷新日历。基本上,我想从孩子调用一个函数,但该函数在父页面上。

在谷歌上,我只找到了一个可以刷新父窗口的脚本——没有关于“父回调”的内容。☹ 有可能吗?

PS答案可以是纯JS也可以是jQuery,没关系。在此期间我会继续寻找。

4

1 回答 1

13

您正在寻找的是对window打开弹出窗口的引用。一旦你有了它,你就可以在那个窗口中调用函数,在那个窗口中读取和写入变量,甚至可以操作它的 DOM。

该引用称为opener. 它为您提供window打开当前窗口的窗口的对象。例如,如果您在原始窗口中有这样的功能:

function updateMe( data ) {
    alert( data );
}

然后在弹出窗口中你可以这样称呼它:

opener.updateMe( 'Hello!' );

自然,您需要确保这updateMe()是原始页面中的全局函数。或者,如果您在原始页面中有某个对象并且updateMe()是该对象的方法,您仍然可以这样做,只要该对象是全局的。例如在主机页面中:

var myObject = {
    updateMe: function( data ) {
        alert( data );
    }
};

然后在弹出窗口中您可以执行以下操作:

opener.myObject.updateMe( 'Hello!' );

基本上,只要您可以使用 访问原始页面中的对象或函数window.whatever,然后在弹出窗口中您可以简单地将其更改为opener.whatever.

于 2013-06-13T21:19:20.473 回答