2010-10-08 35 views
1

Chrome和Safari不會觸發HTML5 onpopstate事件。 這是我的例子:onpopstate事件不會在Chrome/Safari中觸發

<!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> 

回答

2

window.onpopstate()應該火在初始頁面加載,這算作一個歷史穿越。請參閱this WebKit bug,它已在最近的WebKit版本中得到解決。 (您可以按照Chrome 7.0.517.44中的設計輸出HELLO,大概會在下一個版本的Safari中這樣做。)

另請參閱my (invalid) Chrome bug report瞭解更多討論和鏈接。

+0

他們做了更多的改變:http://stackoverflow.com/questions/4688164/window-bind-popstate這個答案不再正確。 – 2011-04-18 17:33:51