我需要一个脚本,当用户关闭页面时,等待几秒钟(没有弹出窗口)然后关闭页面。
我记得在这里的某个地方看到了一种方法,使用ajax(如果我没记错的话),通过运行一个php文件并在关闭之前等待答案,但我再也找不到它了。php 文件包含睡眠功能。
任何帮助是极大的赞赏
(这主要用于淡出文本。当用户进入站点时,文本通过 css3 过渡淡入,当他离开页面时,文本淡出。我只需要时间淡出。是的,我知道这不是用户友好的,但是我被特别要求这样做)
您可能正在考虑同步 ajax 请求(它会阻止 UI):
window.addEventListener('unload',function()
{
var xhr = new XMLHttpRequest();
xhr.open('GET', 'script.php?when=unload',false);//<-- false makes request synchronous
xhr.send();
},false);
但是还有其他方法,检查这个答案
总的来说,我不会做这样的事情。如果一个网站试图拒绝我在我愿意时关闭窗口的选项,我将永远不会再使用/访问它。那,以及您的 JS 代码仍然受制于浏览器如何实现它的事实,并且浏览器可以由客户端的操作系统控制。如果我关闭浏览器应用程序,则 JS 事件在这方面无话可说,尤其是当我终止浏览器进程时(使用kill -9
或 ctrl+alt+del)。
你至少可以给客户一个选择,要么强制退出,要么等待,解释为什么你宁愿客户等一会儿:
window.addEventListener('beforeunload',function u(e)
{
var forceQuit = confirm('\tDo you wish to leave Now?\n
if you do, some changes you made won\'t be saved');
if (forceQuit)
{
return e;
}
//synchronous ajax result here, or:
e.returnValue = false;
e.cancelBubble = true;
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
}
setTimeout(function()
{//first, remove handler, so the beforeunload's behaviour is back to default
window.removeEventListener('beforeunload',u,false);
//dispatch new beforeunload event:
window.dispatchEvent( new Event('beforeunload'));
},5000);
},false);
看看jquery 卸载。您可以将延迟函数绑定到 -unload
事件。