Использование onbeforeunload без диалога?
Я пытаюсь публиковать данные, когда пользователь покидает мою страницу. Мне наконец удалось найти рабочий, но, тем не менее, он выскакивает диалог, когда пользователь уходит. Я пробовал return null;, но не сработало. Можно ли отключить диалог ?
window.onbeforeunload = function() {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
return '';
}
4 ответов:
Со страницы Mozilla Developer Network:
Когда это событие возвращает значение non-void, пользователю предлагается подтвердите выгрузку страницы.
Это означает, что возвращаемое значение обработчика должно быть
undefined(не'',false, илиnull), чтобы избежать запуска запроса подтверждения.window.onbeforeunload = function() { $.post("track.php", { ... }); return undefined; }В javascript вы можете полностью пропустить возвращаемое значение, чтобы получить тот же результат.
В coffeescript с jquery это что-то как
$(document).ready -> $(window).bind('beforeunload', -> #put your cleanup code here undefined )
Не могли бы вы проверить это:
$(window).on('beforeunload', function (e) { if (e.originalEvent) $.post("track.php", { async: false, refid: refid, country: country, type: type, }); else $.get("", { async: false }); $(this).trigger('beforeunload'); }Это создаст много бесполезных запросов, но должно позволить вашему первому запросу достаточно времени, чтобы достичь сервера.
Если вы хотите отключить диалог, пожалуйста, напишите только
window.onbeforeunload = function() { ... return; }Вместо
window.onbeforeunload = function() { ... return ''; }.Я надеюсь, что это поможет вам.
Я нашел очень простой трюк, чтобы заставить это работать с помощью
$(window).bind('onbeforeunload', function () { $.post("track.php", { async: false, refid: refid, country: country, type: type, }); });
Comments