我有一个日历,当我点击<td>
时,会出现一个弹出窗口,您可以为所选日期创建您的日程。我想添加一个功能。
当用户完成创建事件时,我想向父页面发送JavaScript请求,以便我可以使用AJAX刷新日历。基本上,我想调用子函数,但函数在父页面上。
在Google上,我只发现了一个可以刷新父窗口的脚本 - 没有关于“父回调”的内容。 ☹甚至可能吗?
P.S。答案可以是纯JS或jQuery,没关系。我会继续看着。
答案 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
。