我需要一个脚本,当用户关闭页面时,等待几秒钟(没有弹出窗口),然后关闭页面。
我记得在这里找到一个方法,使用ajax(如果我没记错的话),通过运行php文件并在关闭前等待答案,但我再也找不到了。 php文件包含sleep-function。
非常感谢任何帮助
(这主要用于淡出文本。当用户访问网站文本时,通过css3过渡淡出,当他离开页面时,文本淡出。我只需要时间进行淡出。是的,我知道这不是用户友好的但是特别要求我这样做)
答案 0 :(得分:1)
您可能正在考虑同步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);
但是there are other ways, check this answer
总的来说,我不做这样的事情。如果一个网站试图拒绝我在我喜欢的时候关闭窗口的选项,我再也不会使用/访问它了。那,以及您的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);
答案 1 :(得分:0)
看看jquery unload。您可以将延迟函数绑定到unload
- 事件。