2010-07-15 4 views
13

J'ai un élément iframe avec un attribut aléatoire aléatoire. Lorsque je rafraîchis la page à chaque fois, l'iframe doit charger la page avec différents paramètres de requête basés sur l'attribut src. Mais dans firefox, si j'essaie de charger une URL dynamique dans une iframe, elle exécute toujours la première fois l'URL exécutée même si l'attribut src change de manière dynamique. Les paramètres de la requête ne passent pas non plus correctement. Alors, comment je peux résoudre ce problème?Problème de mise en cache Iframe src sur firefox

par exemple:

<?php 

$url = "http://localhost/test.php"; 

$rand_val = rand(1000, 9999); 

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>"; 

?> 

Répondre

4

Nous avons eu le même problème avec firefox mettre en cache la src iframe et désactiver le cache sur la page d'origine ainsi que la page iframe n'a pas aidé. Nous mettons le code suivant (code jQuery) dans la fonction onload de iframe:

$(parent.document).find("iframe").each(function() { 
    // apply the logic only to the current iframe only 
    if(this.contentDocument == window.document) { 
     // if the href of the iframe is not same as 
     // the value of src attribute then reload it 
     if(this.src != location.href) { 
     this.src = this.src; 
     } 
    } 
}); 
+0

hey Rajiv, votre solution fonctionne parfaitement. Merci pour la réponse – karuh24

+0

Dans cette solution l'url originale charge toujours d'abord si ... – Dallin

1

Votre code en PHP exécute une fois et envoie le contenu au navigateur. Lorsque vous actualisez la page, le code ne s'exécute pas à nouveau dans le serveur, car il est servi par le cache. Donc le src de l'iframe utilise le même nombre aléatoire. Pour éviter cela, vous devez désactiver la mise en cache de la page d'origine (pas le cadre iFrame). Ou vous pourriez avoir le nombre aléatoire généré du côté client (en utilisant javascript) de sorte que c'est unique à chaque fois.

+0

J'ai déjà désactivé la mise en cache sur le serveur ainsi que sur le côté client, mais cela ne fonctionne pas. J'ai vu la source de la vue, l'identifiant aléatoire est généré correctement à chaque fois et l'iframe src change aussi correctement, mais l'objet $ _REQUEST ne semble pas être changé. – karuh24

3

Il est rapporté comme un bug de Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

une solution de contournement est la réinitialisation src iframe: document.getElementById ('iframe_id'). src = 'target_url';

Encore il y aura deux demandes: la première demande est erronée et annulée immédiatement avant la deuxième demande qui est correcte.

+0

il y a cinq ans et bug (similaire?) Encore présent dans 41.0.2 ... pitty je ne peux pas le reproduire sans données sensibles du client:/ – Buksy

+0

Presque 6 ans plus tard, et aujourd'hui je suis passé à 48 FF. Encore un problème! -_- – indextwo