【问题标题】:IE8 reloads dynamic iframe content from cache into the wrong iframeIE8 将动态 iframe 内容从缓存重新加载到错误的 iframe
【发布时间】:2011-12-23 00:17:51
【问题描述】:

我的页面上有多个 iframe。每个 iframe 都在调用一些 javascript,这些 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 之间(至少对我而言)。

我尝试了很多不同的配置来尝试解决这个问题。所以,我正在寻找新的建议。

有什么想法吗?

【问题讨论】:

  • 我现在也遇到了这个问题。需要修复!或者你有没有想出解决方案?

标签: javascript windows internet-explorer iframe internet-explorer-8


【解决方案1】:

我遇到了非常类似的问题,即在加载后动态生成的 iframe 卡在第一个 src 上,即使父页面在每次重新加载时更改 iframe 的 src 属性,iframe 仍会加载第一个。

经过几个小时的斗争,我发现这只是


更新:

问题似乎可以通过再次设置 iframe 的 SRC 属性来解决,比如

 iframe.src = iframe.src;

这似乎迫使

【讨论】:

    【解决方案2】:

    老问题,但问题仍然存在。我现在正面临着。问题是我无法控制何时加载 iframe,因为它是由异步插入页面的脚本生成的。

    经过一些修改后,我选择在超时后刷新帧。这是我找到的最佳解决方案。

    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;
                });
            }
       }
    }
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并通过每次创建具有不同 ID 的 iframe 来修复它(仅在 IE11 上测试,但希望这应该可以解决所有版本的问题):

      iframe.id = iframe.name = "iframe$" + Math.floor(Math.random() * new Date().getTime());
      

      注意,设置名称可能没有任何效果(待测试;我只能说只设置名称并不能解决问题)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 2013-09-09
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多