Вызов JavaScript по требованию при выгрузке окна с использованием jquery - PullRequest
5 голосов
/ 12 апреля 2010

Я пытался связать «unload» и «beforeunload» в следующем коде, но ни один браузер не отправляет запрос:

$(window).bind('unload', function(){
       $.ajax({cache: false,
        dataType: "script",
            url: "test.php"
        });
    });

Есть предложения?

Ответы [ 2 ]

6 голосов
/ 12 апреля 2010

Браузер не ждет завершения этого кода ... он работает просто отлично :) Добавьте alert('hi'), чтобы увидеть, как он работает.

Проблема, с которой вы сталкиваетесь, типична для unload проблем: браузер отключается задолго до того, как запрос запускается в вашем случае ... и это действительно должно быть, ни один код, который вы запускаете, не должен завершаться до Мне разрешено перейти на следующую страницу. Именно так unload ведет себя. Вы можете сделать вызов синхронным, чтобы удержать там пользователя, но, пожалуйста, не сделайте это.

Событие unload было создано в окне в основном для очистки всего, что осталось в DOM, в котором вы нуждались, более того, когда сборка мусора была не так хороша, как сейчас (и все еще не в IE) ... он не был разработан с учетом AJAX или метрического отслеживания.

1 голос
/ 12 апреля 2010

Просто установите для параметра async значение false.

$(window).bind('unload', function(){
   $.ajax({
    cache: false,
    async: false,
    dataType: "script",
        url: "test.php"
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...