2009-09-25 41 views
4

我有一個包含多個iframe的網頁,其中包括第三方iframe,如廣告意義和各種共享按鈕。IFrame內容交換錯誤?

在Firefox中,我注意到有時候這些iframe的內容會被交換,以至於您會在另一個iframe中獲得廣告意義上的廣告。 iframe內容出現的地方似乎完全是隨機的。看起來它可能與緩存有關。

有誰知道是什麼原因造成的,或者我可以採取哪些措施來防止這種情況發生?

+0

你說的「被換」是什麼意思?您是否正在執行刷新/重新加載iframe的操作? – wtaniguchi 2009-09-25 20:22:30

+0

我沒有做任何行動。 1幀的內容,加載到另一幀的位置。 – stevewedig 2009-09-26 18:17:17

回答

1

一個合理的答案是兩個iframe具有相同的名稱。我在conkeror(基於firefox的)中經歷過幾次,每次都是名稱衝突。

0

我一直在爲此搏鬥一段時間。問題在於Firefox和它緩存iframe內容的方式。這也不是隨機的。沒有什麼可做,以防止這種不使用iframe的短缺。

您可以重新加載不同iframe的onload使用類似:

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

在廣告的情況下,它會造成雙重印象,這將違反合同你。

複製問題的簡單方法是創建3個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> 

在Firefox中打開。然後切換第一幀和第二幀。

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

刷新index.html。在清除緩存之前,不會交換iframe。

在Mozilla中存在一個錯誤,但目前沒有人正在處理它。

3

在Mozilla的bug報告中所描述的解決方法爲我工作:

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

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

這個問題也許與你相似

儘量把

window.onload = yourcode; 

與身體一起卸載。

我已經在頭段刀尖的JavaScript包含

window.onload = initTip; 

但衝突與我的onload的iframe

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

我的解決方案: 刪除的window.onload = initTip;從頭部分開,然後將它們放入體內。

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

它在Firefox與Reload按鈕工作