我正在使用此代码在子浏览器窗口关闭时更新数据库
window.onbeforeunload = check;
function check(){
var url = 'chat_update.php?chatId='+<?php echo $_GET['chatId'];?>;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",url + Math.random(),false);
xmlhttp.send();
return false;
}
它运行正常但是当子浏览器窗口刷新时,check()函数仍在调用。任何只在子窗口关闭时调用该函数的解决方案?
答案 0 :(得分:0)
无法确定窗口是关闭还是刷新(请参阅the docs,尤其是要调用部分)。但是在你的主窗口中你可以检查,如果子窗口关闭,在onbeforeunload
事件被触发后(我假设你的主窗口中有一个引用到你的子窗口)。
// in main windows js
child.onbeforeunload = function() {
window.setTimeout(function() {
if(child.closed) {
// Perform your ajax here
}
}, 500);
}
答案 1 :(得分:0)
请注意 - Opera不支持onbeforeunload
,请尝试使用onunload
。