2010-10-08 3 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. (Вы выводите код HELLO, как это предусмотрено в Chrome 7.0.517.44, и предположительно сделаете это в следующей версии Safari.)

См. Также my (invalid) Chrome bug report для более подробного обсуждения и ссылок.

+0

Они внесли дополнительные изменения: http://stackoverflow.com/questions/4688164/window-bind-popstate Этот ответ больше не верный. –