Разошлите XMLHttpRequest при закрытии Firefox - PullRequest
3 голосов
/ 29 апреля 2011

У меня проблема.Я хотел бы отправить XML HTTP-запрос (XHR) из моего расширения Firefox, чтобы мой сервер знал, когда Firefox был закрыт.

Теперь я обнаружил следующие проблемы:

onunload: запрос xmlhttprequest прерывается при закрытии Firefox, не позволяя ему получать какие-либо запросы

onbeforeunload : кажется, что он запускается только при перезапуске Firefox и не закрывается!

onclose : та же проблема, что и для onunload.

Так что мне делать?

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Как сказал Нейл, синхронный XHR-запрос позволит выполнить запрос полностью.Однако, если вы планируете опубликовать свое дополнение в официальном репозитории Mozilla, синхронные запросы XHR являются основанием для отклонения ( источника ).

Вы также можете проверить некоторые Уведомления наблюдателя , в частности, те, которые касаются закрытия приложения.Также, если вы пытаетесь разработать модель браузера, вам также может понравиться уведомление наблюдателя user-interaction-inactive.;)

0 голосов
/ 11 ноября 2011

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

function freezeScreen(ms){

    var s=(new Date).getTime();

    while(((new Date).getTime())-s<ms){}

};

Это заставит окно браузера зависнуть на указанное количество мс.

Сразу после отправки асинхронного запроса позвоните freezeScreen, скажем, с 50 мс. Пользователь, вероятно, не заметит этого, и это дает клиенту достаточно времени для отправки запроса, прежде чем клиент отключится.

...