2010-11-24 47 views
0

ContextePolling vs iFrame cachés Ajax histoire

Détection de changement de hachage dans l'URL et la fixation sur le bouton avant/arrière sont deux exigences pour les bibliothèques qui traitent de l'histoire Ajax. Il y a deux écoles de pensée pour la mise en place de ces bibliothèques. Vous pouvez demander à un scrutateur de vérifier en permanence l'URL (les mauvais navigateurs n'ont pas l'événement onHashChange). Ou vous pouvez utiliser un iFrame caché pour ajouter des points dans l'historique de votre navigateur. On peut penser que l'iFrame caché est meilleur que l'interrogation, mais l'iFrame caché ne met pas à jour l'URL du navigateur externe. Donc, si un utilisateur voulait partager son état actuel dans l'application Web, elle partagerait toujours son état initial.

Question

Y at-il technique pour l'histoire Ajax que les deux ne nécessite pas l'interrogation et met également à jour l'URL du navigateur principal?

+0

Quel est le problème résolu par la scrutation? Essayez-vous de résoudre le cas où un utilisateur ajoute manuellement un identifiant de hachage à l'URL actuelle? À quelle fréquence cela va-t-il se produire? –

+0

Voici un exemple: L'utilisateur clique sur un bouton. Le gestionnaire onClick met à jour les valeurs de hachage. L'utilisateur clique sur le bouton de retour. Maintenant, les valeurs de hachage ont été inversées. IE6/7 n'a pas onHashChange, donc vous devez interroger window.location pour les changements lorsque l'utilisateur frappe en avant/en arrière. – JoJo

Répondre

0

Que diriez-vous d'une combinaison des deux techniques? changez l'URL, et utilisez l'iframe. ignorez hashChanged (sur les bons navigateurs), et juste analyser le code de hachage sur dom: prêt

+0

Connaissez-vous une bibliothèque qui fait cela (j'utilise Prototype)? C'est un cauchemar face aux incohérences de Safari vs FF vs IE produit croisé avec des iFrames dynamiques vs statiques. – JoJo

-1

En regardant vos commentaires de la question originale, je recommanderais d'utiliser la méthode iframes pour IE et d'interroger d'autres navigateurs.

Consultez Real Simple History si vous êtes à la recherche d'une bibliothèque qui le gère spécifiquement et que vous voulez une base pour vous aider à faire votre propre rouleau.

Si vous recherchez simplement la fonctionnalité de maintien de l'état de votre page dans une interface Ajax, dojo la prend en charge avec la rondelle dojo.hash(). Cette méthode crée l'événement onhashchange pour les navigateurs qui ne le prennent pas en charge et gère l'état de votre bouton de retour. Il utilise un mélange d'interrogation et d'iframes en fonction du navigateur (les iFrames sont utilisés spécifiquement dans les versions IE < 8).