Когда пользователь покидает страницу, мне нужно спросить его, хочет ли он выполнить определенное действие, прежде чем уйти.
<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) Пользователь получает сообщение "Хотите пинговать?" подтверждение (хорошо), пинг отправлен (хорошо), и пользователю предоставляется всплывающее окно «Эта страница просит вас подтвердить, что вы хотите покинуть» (BAD) .
-или-
2) Пользователь получает "Хотите пинговать?" подтверждение (хорошо), пинг не отправлено (ПЛОХО) , а пользователю не представлен знак «На этой странице вас просят подтвердить хочу оставить "всплывающее окно" (хорошо).
Как я могу отправить пинг AJAX, но при этом отключить всплывающее окно «Эта страница просит вас подтвердить, что вы хотите покинуть»?
Редактировать: Как бы нелепо это ни звучало, "обходной путь", который я нашел для этой проблемы, заключается в alert()
после оператора xmlhttp.send()
. Единственный чистый способ сделать это - предупредить пользователя о том, что его пинг отправлен. Если будущие StackOverflowers найдут лучшее решение, я хотел бы знать.
Спасибо.