[英]IE8 reloads dynamic iframe content from cache into the wrong iframe
我有一個頁面上有多個iframe。 每個iframe都在調用一些javascript,它會動態地將新的iframe寫入父窗口的文檔中。
這適用於首頁加載。 但是,如果頁面在IE8(及更早版本)中刷新,則動態生成的iframe之一將從緩存加載到父頁面上的一個硬編碼插槽中。 請參閱以下示例:
http://www.risingspiral.com/ie8-iframe-refresh/
在IE8中刷新(可能需要幾次嘗試)時,Spot 2_將從緩存加載到spot3.html的iframe中。 spot3.html根本不會被調用。
我已經防止了這里描述的IE動態iframe刷新問題:
http://buildingonmud.blogspot.com/2010/06/ie-iframe-refresh-and-back-button.html
但似乎仍然存在問題。 同樣有趣的是,iframes spot2.html和spot3.html之間似乎總是出現問題(至少對我而言)。
我已經嘗試了很多不同的配置來試圖解決這個問題。 所以,我正在尋找新的建議。
有任何想法嗎?
我遇到了非常類似的問題,一旦加載后動態生成的iframe卡在第一個src上,即使父頁面在每次重新加載時更改了iframe的src屬性,iframe仍會加載第一個。
經過幾個小時的斗爭,我發現這只是<IE8刷新錯誤,如果頁面導航到使用鏈接或通過在地址欄中輸入URL,一切都按預期工作。 因此,只要您不刷新頁面,或通過再次輸入地址來刷新頁面,您應該沒問題。
更新:
似乎可以通過再次設置iframe的SRC屬性來克服這個問題,例如
iframe.src = iframe.src;
這似乎迫使<IE8實際上尊重給定的URL。
老問題,但問題仍然存在。 我現在面對它。 問題是我無法控制何時加載iframe,因為它是由頁面asyncrhonously中插入的腳本生成的。
經過一些黑客攻擊后,我選擇在超時后刷新幀。 這是我發現的最佳解決方案。
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
var ieversion=new Number(RegExp.$1);
if (ieversion<=8){
setTimeout(function(){
iframeReload();
}, 1000);
function iframeReload() {
$("iframe").each(function(index) {
$(this)[0].src = $(this)[0].src;
});
}
}
}
我有同樣的問題並通過每次創建具有不同ID的iframe來修復它(僅在IE11上測試,但希望這可以解決所有版本上的問題):
iframe.id = iframe.name = "iframe$" + Math.floor(Math.random() * new Date().getTime());
請注意,設置名稱可能沒有任何影響(要測試;我只能告訴設置名稱只能解決問題)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.