Событие beforeunload при обновлении страницы в Firefox

В настоящее время я использую faye для pubsub и отключаю клиент в событии beforeunload. Когда он отключается во время закрытия вкладки во время обновления страницы, он выдает следующую ошибку:

Соединение было прервано во время загрузки страницы

Код

window.addEventListener('beforeunload',function(event){
  fayeClient.disconnect();
  event.preventDefault();});

Есть ли способ помешать firefox закрыть соединение до завершения вызова. Приведенный выше код отлично работает в chrome


person krishnan    schedule 30.04.2014    source источник
comment
В FF (не уверен, что это последняя версия) вы можете использовать синхронный запрос. К вашему сведению, это вообще не будет работать на хроме   -  person A. Wolff    schedule 30.04.2014
comment
отлично работает на хроме 34   -  person Noino    schedule 30.04.2014
comment
@Noino Вы уверены, что сервер обработает запрос? AFAIK, chrome не позволяет отправлять запрос ajax из события onbeforeunload (не тестировалось в последней версии chrome)   -  person A. Wolff    schedule 30.04.2014
comment
@A-Wolff только что проверил, прежде чем написать предложение взломать мой ответ.   -  person Noino    schedule 30.04.2014
comment
Библиотека (faye) внутренне решает, использовать ли xhr или веб-сокеты. Я уверен, что смогу синхронизировать вызовы.   -  person krishnan    schedule 30.04.2014
comment
@Noino Спасибо за вклад;)   -  person A. Wolff    schedule 30.04.2014


Ответы (1)


Как предотвратить выгрузку страницы с помощью jQuery?

внизу в комментариях написано:

event.preventDefault() в этом случае не работает, предположительно потому, что современные браузеры не хотят, чтобы вредоносные кодеры захватили окно и сделали его незакрываемым? — yochannah 09 май 2013, в 08:45

Я не верю, что можно отложить его дольше, чем требуется для выполнения этого кода, исключая любые асинхронные возвраты и тайм-ауты.

Итак, чтобы взломать это. Вызовите свое отключение, затем выполните синхронный вызов файла, который

<?php
sleep(1);
person Noino    schedule 30.04.2014
comment
как сделать синхронный звонок фей? - person Chamnap; 09.11.2014