0

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

我记得在这里的某个地方看到了一种方法,使用ajax(如果我没记错的话),通过运行一个php文件并在关闭之前等待答案,但我再也找不到它了。php 文件包含睡眠功能。

任何帮助是极大的赞赏


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

4

2 回答 2

2

您可能正在考虑同步 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);
于 2013-09-12T06:52:03.393 回答
0

看看jquery 卸载。您可以将延迟函数绑定到 -unload事件。

于 2013-09-12T06:34:07.763 回答