从子窗口调用父窗口的JavaScript

时间:2013-06-13 19:38:46

标签: javascript jquery popupwindow

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

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

在Google上,我只发现了一个可以刷新父窗口的脚本 - 没有关于“父回调”的内容。 ☹甚至可能吗?

P.S。答案可以是纯JS或jQuery,没关系。我会继续看着。

1 个答案:

答案 0 :(得分: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