Событие onpopstate не запускается в Chrome/Safari

Chrome и Safari не вызывают событие HTML5 onpopstate. Вот мой пример:

<!doctype html> 
<html> 
    <head> 
        <title></title> 
        <script src="http://code.jquery.com/jquery-latest.js"></script> 
        <script> 
            window.onpopstate = function(e) {
                document.getElementById("log").innerHTML = "HELLO";
            }
            $(function() {
                $("a").click(function(e) {
                    e.preventDefault();
                    window.history.pushState({page: $(this).index()}, $(this).html(), $(this).attr('href'));
                });
            });
        </script> 
    </head> 
    <body> 
        <a href="new-state">Foo</a> 
        <a href="other-state">Hallo</a> 
        <div id="log"></div> 
    </body> 
</html>

person forberg    schedule 08.10.2010    source источник


Ответы (1)


window.onpopstate() должен срабатывать при начальной загрузке страницы, что считается обходом истории. См. эту ошибку WebKit, которая была устранена в последних сборках WebKit. (Ваш код выводит HELLO, как это было разработано в Chrome 7.0.517.44, и, предположительно, будет делать это в следующей версии Safari.)

См. также мой (недействительный) отчет об ошибке Chrome, чтобы узнать больше и обсудить ссылки.

person Robert Calhoun    schedule 01.12.2010
comment
Они внесли дополнительные изменения: stackoverflow.com/questions/4688164/window-bind-popstate Этот ответ - нет дольше правильно. - person Ted Ballou; 18.04.2011