页面事件是否可以在页面加载中保留?

时间:2014-01-17 10:14:11

标签: javascript jquery

我有一个页面,当用户点击图标时,会启动第二个窗口来更新某些数据库条目。当子窗口打开时,我想附加一个事件来触发回调函数并更新父屏幕上的字段。目前,javascript类似于:

var child = window.open(URL);
child.name = reference; // used to store parameters about which field to update
$(child).on('unload', function() {
    var w = this.name.split(':');
    fieldUpdate(w[1],w[0]);
});
// also tried ...
// child.onbeforeunload = function...
// child.onunload = function...
// child.onclose = function...

问题在于,在其他地方使用且无法更改的子页面使用<input type="submit"...>来启动回发并更新数据库。然后控制器方法重新加载视图,这显然会清除所有事件。因此,回调仅在第一次更新时被调用。

在我的测试中,onbeforeunload在控制器回发之前被调用,onunload被调用之后,onclose在使用{{1}时根本没有被调用}}。在所有情况下,submit属性都会保留在重新加载的页面中,但所有事件都会被清除。

父窗口是否可以设置事件(或恢复它),以便在child.name操作发生时触发回调?我已经尝试过设置超时回调,但似乎在获取/保留子窗口参数方面存在问题。


更新

有关信息,我希望调用的方法类似于(实际代码有更多的错误检查等):

submit

这是对朱利安关于使用AJAX的评论的回答。正如您所看到的,我已经这样做了,但是如何通过单击我遇到问题的子页面中的“提交”按钮来触发调用。

如果我可以修改子页面,这将是相当容易的,但不幸的是,这不是一个选项,因为它会破坏太多的其他代码。

0 个答案:

没有答案