Когда пользователь покидает страницу, мне нужно спросить его, хочет ли он выполнить определенное действие перед выходом.
<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 найдут лучшее решение, я хотел бы знать.
Спасибо.