我有一个页面A,用页面B创建一个窗口。
页面B询问用户一些数据,将它们插入数据库然后自行关闭。 在插入之后,我正在尝试自动刷新页面A(既可以是A看到B已关闭,也可能是由B本身在关闭之前(或之后)触发的功能)
我该怎么做?
答案 0 :(得分:2)
JavaScript window.open()
返回对已打开窗口实例的引用。您可以使用它来设置onunload
事件处理程序,如下所示:
var hWndB = window.open('somepage.php'),
hWndA = window.self;
hWndB.onunload = function(){ hWndA.location.reload(); }
答案 1 :(得分:1)
您可以使用onunload
事件和window.opener
。例如。
window.addEventListener('unload', function() {
window.opener.location.reload();
}, false);
或者您可以使用jquery,因此您不会遇到任何交叉浏览器兼容性问题:
$(window).on('unload', function() {
window.opener.location.reload();
});
还有另一个名为onbeforeunload
的事件,您可能需要查看。
修改强>
对于旧版浏览器,您可以使用@CORRUPT在评论中提供的黑客攻击:window.open() returns undefined or null on 2nd call
答案 2 :(得分:0)
变体“看见B关闭”:
//winb is global variable
winb=window.open(blah blah); //Existing: A opens B
window.setTimeout(checkWinB,1000);
function checkWinB() {
if (winb.closed()) refreshMySelf();
else window.setTimeout(checkWinB,1000);
}
变体“B踢A”:
opener.rerfreshMySelf();
window.close() //Existing: B closes
两种变体都需要refreshMySelf()
函数来刷新页面。如何执行此操作取决于页面机制,但非AJAX页面的起点是
function refreshMySelf() {
location.reload();
}