我有一個包含多個iframe的網頁,其中包括第三方iframe,如廣告意義和各種共享按鈕。IFrame內容交換錯誤?
在Firefox中,我注意到有時候這些iframe的內容會被交換,以至於您會在另一個iframe中獲得廣告意義上的廣告。 iframe內容出現的地方似乎完全是隨機的。看起來它可能與緩存有關。
有誰知道是什麼原因造成的,或者我可以採取哪些措施來防止這種情況發生?
我有一個包含多個iframe的網頁,其中包括第三方iframe,如廣告意義和各種共享按鈕。IFrame內容交換錯誤?
在Firefox中,我注意到有時候這些iframe的內容會被交換,以至於您會在另一個iframe中獲得廣告意義上的廣告。 iframe內容出現的地方似乎完全是隨機的。看起來它可能與緩存有關。
有誰知道是什麼原因造成的,或者我可以採取哪些措施來防止這種情況發生?
一個合理的答案是兩個iframe具有相同的名稱。我在conkeror(基於firefox的)中經歷過幾次,每次都是名稱衝突。
我一直在爲此搏鬥一段時間。問題在於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中存在一個錯誤,但目前沒有人正在處理它。
在Mozilla的bug報告中所描述的解決方法爲我工作:
<iframe src="webpage2.html?var=xxx" id="theframe"></iframe>
<script>
var _theframe = document.getElementById("theframe");
_theframe.contentWindow.location.href = _theframe.src;
</script>
這個問題也許與你相似
儘量把
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按鈕工作
你說的「被換」是什麼意思?您是否正在執行刷新/重新加載iframe的操作? – wtaniguchi 2009-09-25 20:22:30
我沒有做任何行動。 1幀的內容,加載到另一幀的位置。 – stevewedig 2009-09-26 18:17:17