关闭页面前等待几秒钟

时间:2013-09-12 06:31:35

标签: php jquery ajax

我需要一个脚本,当用户关闭页面时,等待几秒钟(没有弹出窗口),然后关闭页面。

我记得在这里找到一个方法,使用ajax(如果我没记错的话),通过运行php文件并在关闭前等待答案,但我再也找不到了。 php文件包含sleep-function。

非常感谢任何帮助


(这主要用于淡出文本。当用户访问网站文本时,通过css3过渡淡出,当他离开页面时,文本淡出。我只需要时间进行淡出。是的,我知道这不是用户友好的但是特别要求我这样做)

2 个答案:

答案 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 - 事件。​​