簡體   English   中英

IE8將來自緩存的動態iframe內容重新加載到錯誤的iframe中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM