当用户导航离开页面时,我正在尝试运行php脚本。这就是我目前使用的:
function unload(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
window.location = "unsupported.html";
return false;
}
}
}
ajaxRequest.open("GET", "ajax/cancelMatch.php", true);
ajaxRequest.send(null);
}
通过FireBug,看起来它正在调用ajaxRequest对象的open函数,但是PHP没有运行!这是否与它在卸载页面时调用它的事实有关?
此外,我发现了一个名为onbeforeunload的事件,但如果它仍然可用,我无法弄清楚如何让它工作。
答案 0 :(得分:4)
“onbeforeunload”无法在每个浏览器中运行。就像chacha102所说,你需要确保PHP脚本没有停止请求被终止的第二步 - ignore_user_abort()
是确保这一点的好方法。
另外,您可能想尝试更简单的事情。将图像注入页面以激发请求可能就是您需要做的所有事情。
function onunload() {
var i = document.createElement("img");
i.src = "ajax/cancelMatch.php?" + Math.random();
document.appendChild(i);
return;
}
答案 1 :(得分:2)
您需要确保ignore_user_abort()
尽快设置为true。如果有默认设置,那就更好了。