onpopstate事件不会在Chrome / Safari中触发

时间:2010-10-08 11:15:26

标签: html5 javascript-events google-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>

1 个答案:

答案 0 :(得分:2)

window.onpopstate()应该触发初始页面加载,这将被视为历史遍历。请参阅this WebKit bug,它已在最近的WebKit版本中得到解决。 (您的代码按照Chrome 7.0.517.44中的设计输出HELLO,并且可能会在下一版Safari中执行此操作。)

有关更多讨论和链接,另请参阅my (invalid) Chrome bug report