onbeforeunload в Safari не запускает серверную часть кода - PullRequest
1 голос
/ 14 июня 2010

При закрытии браузера или F5 я должен выполнить некоторый код на стороне сервера Для этого у меня есть кнопка. По нажатию той кнопки, на которой написаны функции onclientclick и onclick. Я также написал событие в window.onbeforeunload, которое выполняет button.click ().

window.onbeforeunload=function(e)
{
   button.click()
}

Моя проблема в том, что при этом выполняется код функции нажатия кнопки на стороне клиента, однако код на стороне сервера не выполняется. Это происходит только когда я закрываю браузер. Когда я делаю F5, это работает отлично. Также это происходит только в Safari. В фф и мозила работает отлично. Как я могу

Ответы [ 3 ]

1 голос
/ 12 августа 2010

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

0 голосов
/ 15 декабря 2010

как любопытство, проблема в том, что Safari не распознает событие onbeforeunload ... поэтому любой код там не будет запускаться в Safari.Вы можете использовать событие onunload, но здесь вы никогда не сможете предотвратить закрытие страницы

0 голосов
/ 14 июня 2010

Возможно, проблема в скорости, кнопка нажимается, но ответ не отправляется на сервер достаточно быстро, поэтому браузер закрывается, прежде чем его можно будет отправить.

Если вам нужно, вывсегда может выдать подсказку, чтобы замедлить закрытие окна, но это очень недружелюбно.

...