Использование onbeforeunload без диалога?



Я пытаюсь публиковать данные, когда пользователь покидает мою страницу. Мне наконец удалось найти рабочий, но, тем не менее, он выскакивает диалог, когда пользователь уходит. Я пробовал return null;, но не сработало. Можно ли отключить диалог ?



window.onbeforeunload = function() {

$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});

return '';

}
467   4  

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

    Ничего не найдено.