Si vous êtes multi-domaines, le simple fait de redéfinir le src sur la même URL ne déclenchera pas toujours un rechargement, même si le hachage de l'emplacement change.
J'ai rencontré ce problème lors de la construction manuelle des iframes des boutons Twitter, qui ne s'actualiseraient pas lorsque je mettais à jour les URL.
Les boutons comme Twitter ont la forme:
.../tweet_button.html#&_version=2&count=none&etc=...
Puisque Twitter utilise le fragment de document pour l'URL, la modification du hachage / fragment n'a pas rechargé la source, et les cibles de bouton ne reflétaient pas mon nouveau contenu chargé en ajax.
Vous pouvez ajouter un paramètre de chaîne de requête pour forcer le rechargement (par exemple: "?_=" + Math.random()
mais cela gaspillera de la bande passante, en particulier dans cet exemple où l'approche de Twitter essayait spécifiquement d'activer la mise en cache.
Pour recharger quelque chose qui ne change qu'avec des balises de hachage, vous devez supprimer l'élément, ou changer le src
, attendre que le thread se termine, puis le réattribuer. Si la page est toujours en cache, cela ne devrait pas nécessiter de hit réseau, mais déclenche le rechargement du cadre.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Mise à jour : l'utilisation de cette approche crée des éléments d'historique indésirables. Au lieu de cela, supprimez et recréez l'élément iframe à chaque fois, ce qui permet à ce bouton back () de fonctionner comme prévu. Aussi bien de ne pas avoir la minuterie.