Javascript: подавить всплывающее окно «Эта страница просит вас подтвердить, что вы хотите покинуть» в onbeforeunload

Когда пользователь покидает страницу, мне нужно спросить его, хочет ли он выполнить определенное действие перед выходом.

<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 ( "" , null , true , false , или без ] return , у меня может быть одна из двух ситуаций:

1) Пользователь получает сообщение «Хотите проверить связь?» подтверждение (хорошо), пинг отправлен (хорошо), и пользователю предоставляется всплывающее окно «Эта страница просит вас подтвердить, что вы хотите покинуть» (ПЛОХО) .

-или-

2) Пользователь получает сообщение «Хотите проверить связь?» подтверждение (хорошо), пинг не отправлен (BAD) , и пользователю не отображается сообщение «Эта страница просит вас подтвердить, что вы хочу оставить "всплывающее окно (хорошо).

Как я могу отправить эхо-запрос AJAX, но при этом подавить всплывающее окно «Эта страница просит вас подтвердить, что вы хотите покинуть»?

Редактировать: Как бы смешно это ни звучало, «обходной путь» я обнаружил, что для решения этой проблемы используется alert () после оператора xmlhttp.send () . Единственный чистый способ сделать это - предупредить пользователя о том, что его пинг отправлен.Если в будущем StackOverflowers найдут лучшее решение, я хотел бы знать.

Спасибо.

7
задан dotancohen 12 February 2012 в 09:17
поделиться