繁体   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