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>
答案 0 :(得分:2)
window.onpopstate()
应该触发初始页面加载,这将被视为历史遍历。请参阅this WebKit bug,它已在最近的WebKit版本中得到解决。 (您的代码按照Chrome 7.0.517.44中的设计输出HELLO,并且可能会在下一版Safari中执行此操作。)
有关更多讨论和链接,另请参阅my (invalid) Chrome bug report。