Ajax (или JSONP) при выгрузке с Safari / Chrome - PullRequest
3 голосов
/ 16 мая 2009

Если вы попытаетесь отправить Ajax-запрос, JSONP-запрос или даже запрос window.name при выгрузке, Safari и Chrome выполнят код, но сервер никогда не увидит запрос. Моя теория заключается в том, что поток выполнения никогда не позволяет тегу script работать до того, как он изменит страницу. Вот тестовая страница с тестом JSONP. Этот код (а также Ajax и window.name) создает запрос для test.html в Firefox и IE7, но не в Safari:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
    </head>
    <body>

        <script language="javascript" type="text/javascript">
            window.onunload = function(){
                var encode = "UTF-8";
                var script = document.createElement('script');
                script.type = 'text/javascript';
                script.src= "/test.html";
                script.charset= encode;
                document.body.appendChild(script)
            }
        </script>

    </body>
</html>

Кто-нибудь знает хороший способ обойти это? Точнее, кто-нибудь знает способ заставить Safari отправить запрос на выгрузку? Единственное решение, которое я нашел (что не очень помогает в моем случае) - это синхронный XHR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...