2009-09-25 3 views
4

J'ai une page Web avec un certain nombre d'iframes, y compris les iframes tierces comme ad sense et divers boutons de partage.Bogue d'échange de contenu IFrame?

Dans Firefox, j'ai remarqué que de temps en temps le contenu de ces iframes est échangé, de sorte que vous obtenez une annonce de sens d'ad où se trouve un autre iframe. Il semble complètement aléatoire où le contenu iframe apparaît. Il semble que cela puisse avoir quelque chose à voir avec la mise en cache.

Est-ce que quelqu'un sait ce qui cause cela, ou des mesures que je peux prendre pour éviter que cela se produise?

+0

Que voulez-vous dire par « se permutés »? Faites-vous des actions pour actualiser/recharger les iframes? – wtaniguchi

+0

Je ne fais aucune action. le contenu pour 1 trame, charge à l'emplacement d'une autre image. – stevewedig

Répondre

1

Une réponse plausible est que deux iframes ont le même nom. J'ai expérimenté cela plusieurs fois dans conkeror (basé sur firefox), et chaque fois que ça a été un conflit de noms.

0

Je me bats avec ça depuis un moment maintenant. Le problème est avec firefox et la façon dont il met en cache le contenu iframe. Ce n'est pas non plus aléatoire. Il n'y a rien à faire pour empêcher cela de ne pas utiliser les iframes.

Vous pouvez recharger les iframes onLoad en utilisant quelque chose comme:

var reloadIframes = function() { 
    var a = window.frames, b = a.length 
    while (b--) { 
     a[b].src = a[b].src; 
    } 
} 

Dans le cas des annonces, il fera doubles impressions qui vous violez contrat.

Un moyen facile de répliquer le problème est de créer 3 fichiers html.

<!--frame1.html--> 
<html> 
<body> 
<h3>frame one</h3> 
</body> 
</html> 

<!--frame2.html--> 
<html> 
<body> 
<h3>frame two</h3> 
</body> 
</html> 

<!--index.html--> 
<html> 
<body> 
<iframe src="frame1.html"></iframe> 
<iframe src="frame2.html"></iframe> 
</body> 
</html> 

Ouvrir dans Firefox. Ensuite, changez le cadre 1 et le cadre 2.

<!--index.html--> 
<html> 
<body> 
<iframe src="frame2.html"></iframe> 
<iframe src="frame1.html"></iframe> 
</body> 
</html> 

Actualiser l'index.html. Les iframes ne seront pas permutées tant que vous n'aurez pas vidé votre cache.

Il y a un bug chez mozilla mais personne ne travaille dessus.

3

La solution décrite dans ce rapport de bogue Mozilla a fonctionné pour moi:

<iframe src="webpage2.html?var=xxx" id="theframe"></iframe> 

<script> 
var _theframe = document.getElementById("theframe"); 
_theframe.contentWindow.location.href = _theframe.src; 
</script> 
0

Ce problème peut-être semblable à la vôtre

essayer de mettre

window.onload = yourcode; 

avec Déchargement du corps.

i ont la pointe de l'outil javascript sur le segment de tête qui contient

window.onload = initTip; 

mais le conflit avec mon onload iframe

<body onload = "parent.myframe.location='mypage.html'"> 

ma solution: supprimer que window.onload = initTip; du segment de la tête, puis les mettre dans le corps.

<body onload = "initTip(); parent.myframe.location='mypage.html'"> 

c'est un travail avec le bouton reload sur firefox