我有一个打开新窗口的网站。我试图在子窗口上触发onclose
事件(如果用户关闭窗口,父窗口将提醒它)。
我在How to run function of parent window when child window closes?
找到了有关该问题的stackoverflow问题但是,答案还会对子窗口执行操作,我认为我不能这样做,因为子窗口打开了一个不在我控制范围内的网站(我无法编辑它的html)。
我正在考虑使用以下内容来触发关闭事件
var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });
$(window).bind("beforeunload", function() {
return inFormOrLink;
})
如何在新标签/窗口中应用此功能?
答案 0 :(得分:0)
这不可能仅在客户端进行。 为此,您需要执行以下操作:
中提琴。
我不知道更简单的方法。
原始窗口:
function waitForTabClose(windowID) {
$.post('waitfortabclose.php',{windowID:windowID},function(data) {
if (data == 1) {
// Do tab closed stuff
} else {
waitForTabClose(windowID);
}
});
}
<强> waitfortabclose.php 强>
$i=1;
$wID = $_POST['windowID'];
do {
if (file_get_contents($wID) == $wID) {
echo 1;exit;
}
set_time_limit(30);
sleep(5);
} while($i++ < 50);
echo 0;
新标签
window.onclose = function() {
$.post('windowclosed.php',{windowID:windowID);
};
<强> windowclosed.php 强>
$wID = $_POST['windowID'];
file_put_contents($wID,$wID);
这是伪代码,尚未经过测试。功能可以用很多方式编写,这就是我的工作方式。
答案 1 :(得分:0)
找到了我想要的解决方案。它比上面的答案加上它的实际效果和我想要的要容易得多。
var win = open('http://www.google.com');
if (win.closed) {
alert('Window closed! Hoorah!');
}
非常感谢那些尝试过帮助的人。