Je suis en train de faire une application web pour gérer les RÉFÉRENCES produits. Une partie de qui est d'associer les Références à des noms de produits. Sur chaque ligne d'une table, je liste SKU et afficher un <select>
boîte avec des noms de produits. Les produits associés à cette SKU dans la base de données est donné un attribut comme selected="selected"
. Ceci peut être modifié et mis à jour via AJAX.
Il y a beaucoup de produit <option>
s - 103 pour être exact, et cette liste est répétée dans l' <select>
sur chaque ligne.
À partir d'une autre entrée sur la page, je suis à l'aide de jQuery AJAX demandes d'ajout de nouveaux SKU/associations de produits, et de le rendre clair qu'ils sont ajoutés instantanément, je les insérer dans le haut de la table avec un peu de mettre en évidence d'effet. Comme le nombre de Références augmente au-delà de 10 ou alors, si j'actualise la page (qui charge tout l'arrière de la base de données commandé par nom de produit), Firefox commence à montrer quelques mauvaises options sélectionnées par défaut. Elle n'est pas conforme à propos de qui option incorrecte il montre, mais il semble être un mélange des options qui existaient avant le rechargement de la page.
Si je inspecter l' <select>
à l'aide de Firebug, l' select="selected"
est sur la bonne <option>
balise. L'actualisation de la page (ou à la sortie et en tapant cette URL de la page retour à retour) ne pas s'afficher correctement, mais dur rafraîchissant (Ctrl+F5) ne.
Chrome et IE7 afficher correctement en premier lieu.
Ma théorie est que c'est un résultat d'une mauvaise stratégie de cache de Firefox. Est-ce que son droit? Est-il possible que je peux dire dans mon code "si cette page est actualisée en faire un rafraîchissement - recharger tout à partir de zéro?"
Mise à jour
Pour résoudre ce problème, j'ai changé de stratégies.
- Précédemment, j'ai mis un
<select>
avec une longue liste d'<option>
s sur chaque ligne de la table, avec le courant de la valeur par défaut - Maintenant, j'ai mis la valeur de courant en
<span>
. Si l'utilisateur clique sur un bouton "modifier", j'ai remplacer l'<span>
avec un<select>
, et le bouton "modifier" devient un bouton "confirmer". Si ils changent les options et cliquez sur confirmer, AJAX mises à jour de la base de données et l'<select>
remonte à être un<span>
, cette fois avec la nouvelle valeur.
Ceci a deux avantages:
- Il corrige le bug décrit ci-dessus
- Il nécessite beaucoup moins d'éléments du DOM de la page (tous ceux redondant
<option>
s)