2010-01-14 4 views
6

Je développe une application web où, en raison de l'accès lent à la base de données, tout le contenu d'une page n'est pas chargé immédiatement mais dynamiquement lorsque l'utilisateur clique sur bouton après avoir éventuellement fait une sélection.Différences dans Internet Explorer et Firefox lors du chargement dynamique du contenu avant et après

Cela fonctionne très bien. Toutefois, après le chargement dynamique du contenu, si je navigue vers une autre page Web, puis revenez dans Internet Explorer, le contenu chargé aura disparu, c'est-à-dire que la page sera revenue à la page initialement récupérée. Dans Firefox (et Opera également), cependant, le contenu chargé sera toujours là, c'est-à-dire que la page ressemblera à ce qu'elle était avant de m'en éloigner.

Le comportement de Firefox est le comportement souhaité dans mon cas, car l'utilisateur accède régulièrement aux sous-pages et retourne à la page principale. Ma question est donc la suivante: y a-t-il un moyen de forcer Internet Explorer à afficher ce comportement ou existe-t-il des solutions de contournement possibles pour obtenir le résultat souhaité?

Répondre

3

Voici ma solution de contournement pour IE. Il utilise le fait que, même si le DOM est réinitialisé lors de la navigation et retour à une page, les valeurs de champ de saisie sont encore mémorisées.

Pour chaque élément chargé dynamiquement, j'ai également un champ d'entrée caché où je "cache" la valeur chargée. J'ai alors une fonction transferFromCache() qui copie les valeurs de chaque champ d'entrée caché dans l'élément correspondant. Cette fonction est exécutée à la page init - qui, dans le cas d'IE, se trouve au chargement de la page ET chaque fois que l'on revient à la page.

Cette technique pourrait probablement aussi être utilisée pour stocker les valeurs des variables javascript.

2

Je ne pense pas qu'il existe une méthode pour que IE émule FF de cette manière. La raison est de faire avec des aspects assez fondamentaux des navigateurs. FF utilise un mécanisme pour l'historique de sa page appelé 'Fast DOM Caching' qui signifie (d'après ma compréhension limitée) que quand il met une page dans l'historique du navigateur, il stockera le DOM actuel (donc l'état de la page en cours) format, ce qui signifie que lorsque la page est rechargée à partir de l'historique, l'état est préservé et FF peut le faire beaucoup plus rapidement car beaucoup de travail est déjà fait (analyse du HTML dans un DOM, etc). En comparaison, IE stockera simplement le HTML reçu initialement comme fichier historique et le rechargera lors de la navigation dans l'historique.

+0

Il semble que, en ce qui concerne IE, c'est presque ainsi, mais pas tout à fait. A titre d'exemple, dans mon application j'utilise le filtrage javascript et la pagination (du contenu dans un tableau). J'utilise des boîtes de saisie "select" pour le filtrage. Dans IE et FF, les options sélectionnées sont mémorisées après la navigation et retour. J'utilise des variables javascript pour l'état de pagination. Cette information est mémorisée dans FF, mais réinitialisée dans IE. –

2
+0

Merci. Cet article semble décrire le comportement IE. En FF, javascript n'est pas réinitialisé lorsque vous naviguez loin et retour. Mais les solutions de contournement pourraient être utiles dans IE, je pourrais essayer le second (en utilisant des champs d'entrée cachés pour stocker des informations). –

Questions connexes