2010-10-27 27 views
3

Est-ce que onHashChange ou hashChange fonctionne dans Safari? Je l'ai testé avec Safari 4.0.4 sur Windows 7 et ça ne marche pas pour moi.Est-ce que onHashChange fonctionne dans Safari?

Si cela ne fonctionne pas, existe-t-il une solution pour suivre si le hash a changé?

+0

http://stackoverflow.com/questions/680785/on-window-location-hash-change vous y trouverez votre solution. Répondre à la question, ça marche dans Safari? - No. – jolt

+0

Pff: | Fcking Safari! – Adam

+1

Oh, _please_. Essayez "F * cking IE" pour la taille –

Répondre

1

Dans Safari 4.0.4 cela ne fonctionne pas encore, mais dans la dernière fonctionne très bien. Et je n'ai trouvé aucune solution acceptable pour suivre si le hachage a changé pour les navigateurs qui ne supportent pas onHashChange.

+0

if ("onhashchange" dans la fenêtre) { alert ("Le navigateur supporte l'événement hashchange!"); } – JoJo

1

Dans notre application sondage nous pour vérifier les changements:

$b.hashCheck = setInterval(
    function(){ 
     if (window.location.hash !== $b.C.current_hash){ 
      $b.C.current_hash = window.location.hash; 

      //call the on change action here 

     } 
    },$b.C.hashCheckDelay 
); 

$ b est l'objet global que nous utilisons pour notre espace de nom et hashCheckDelay a été empiriquement fixé à 120ms.
Bien qu'il semble un peu triste de faire ce genre de processus, il n'y a pas de problème de performance sur les navigateurs que nous avons testés.

+0

merci pour votre réponse, cela pourrait être une solution pour suivre si le hachage a changé dans les navigateurs qui ne supportent pas 'onHashChange' mais ce n'est pas une bonne solution, car avec beaucoup des requêtes nécessite trop de performances. – Adam

+0

Je l'utilise dans notre application, mais une seule fonction vérifie et envoie le message à l'objet concerné. Sans problèmes de performance. – Mic