2010-10-08 5 views
1

Chrome et Safari ne déclenchent pas l'événement HTML5 onpopstate. Voici mon exemple:L'événement onpopstate ne se déclenche pas dans 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> 

Répondre

2

window.onpopstate() doit tirer sur la charge de la page initiale, qui compte comme traversal d'histoire. Voir this WebKit bug, qui a été résolu dans les versions récentes de WebKit. (Vous codez les sorties HELLO comme prévu dans Chrome 7.0.517.44, et probablement dans la prochaine version de Safari.)

Voir aussi my (invalid) Chrome bug report pour plus d'informations et de liens.

+0

Ils ont apporté d'autres modifications: http://stackoverflow.com/questions/4688164/window-bind-popstate Cette réponse n'est plus correcte. –

Questions connexes