Javascript:抑制"此页面要求您确认是否要离开“;在加载前弹出

Javascript: suppress "This page is asking you to confirm that you want to leave" popup on onbeforeunload

本文关键字:离开 是否 加载 确认 抑制 quot Javascript      更新时间:2023-09-26

当用户离开页面时,我需要询问他是否想在离开之前执行特定操作。

<script type="text/javascript">
$(document).ready(function() {
        window.onbeforeunload = askConfirm;
});
function askConfirm() {
    var addFriend = confirm("Would you like to ping?");
    if (addFriend) {
        var xmlhttp;
        if (window.XMLHttpRequest) {
            xmlhttp=new XMLHttpRequest();
        } else {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET","http://example.com?ping=1234",true);
        xmlhttp.send();
    }
    return null;
}

根据最后一个return语句的值(""nulltruefalse,或者根本没有return语句),我可以有两种情况之一:

1) 用户收到"你想ping吗?"确认(好),ping被发送(好)。用户会收到"This page is asking you to confirm that you want to leave"弹出窗口(BAD)

-或-

2) 用户得到"你想ping吗?"确认(好),ping被不发送(坏),并且用户被not显示"This page is asking you to confirm that you want to leave"弹出窗口(好)。

如何发送AJAX ping,同时抑制弹出的"This page is asking you to confirm you want to leave"

编辑:尽管听起来很荒谬,但我为这个问题找到的"解决方案"是在xmlhttp.send()语句之后的alert()。唯一干净的方法是提醒用户他的ping已经发送。如果未来的StackOverflowers能找到更好的解决方案,我很想知道。

谢谢。

您可以使Ajax请求同步。

xmlhttp.open("GET","http://example.com?ping=1234", false); // use false here 
xmlhttp.send(); 

如果您的服务器速度较慢,它可能会导致轻微的延迟,但它应该可以解决ping无法发送的问题。

好吧,我没有在你离开之前做,而是在网上做了,下面是我在FF和IE中的工作(除了chrome,我只有这些):http://jsfiddle.net/rmpLm/9/.

也许你可以让它在chrome上工作,但如果你做不到,也许你可以制作它,这样如果你点击ok,它会把你带到你发送它的页面。希望它能有所帮助:)

编辑:也许你应该考虑让它加载