首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firefox中不偶尔加载动态iframe

Firefox中不偶尔加载动态iframe
EN

Stack Overflow用户
提问于 2010-11-17 14:29:20
回答 2查看 4.3K关注 0票数 6

我有一些JavaScript代码,它动态地在给定的HTML页面中注入一个iframe。不幸的是,在Firefox中,而且仅在Firefox中,尽管iframe不时地被创建,但相关的URL并没有加载到其中。

我知道它没有加载,因为相关的URL没有出现在Firebug Net选项卡中,而且当我检查iframe时,我没有看到任何预期的HTML代码(当iframe位于与外围页面相同的域时)。我也没有看到任何JavaScript或网络错误。

下面是一个代码片段,我检查了所有相关变量是否正确:

代码语言:javascript
复制
    var iframe = document.createElement("iframe");
    iframe.width = options["w"];
    iframe.height = options["h"];
    iframe.scrolling = "no";
    iframe.marginWidth = 0;
    iframe.marginHeight = 0;
    iframe.frameBorder = 0;
    iframe.style.borderWidth = 0;

    if (node.childNodes.length > 0) 
        node.insertBefore(iframe, node.childNodes[0]);
    else 
        node.appendChild(iframe);

    iframe.contentWindow.location = iframeSrc + "?" + querystring;

下面是为iframe设置的示例URL (当URL指向外部服务器时,问题也会重新创建,必须在开始时省略'http://‘’,否则我无法发布问题):

代码语言:javascript
复制
127.0.0.1:8000/widget/iframe/index.html?style=slide-top-to-bottom&culture_code=en_us&c=26&sc=1324&title=Top%20News&caption=Top%20Stories&order=relevance&count=20&w=250&h=300&timestamp=true&scrollbar=false&theme=ui-lightness&className=8815455464592103&referrer=http%3A%2F%2F127.0.0.1%3A8000%2Fwidget%2Fbuilder%2Findex.html

我在网上做了一些研究,发现了一个未修复的火狐bug,它似乎与这个问题有关:https://bugzilla.mozilla.org/show_bug.cgi?id=279048

在阅读了这个bug之后,我尝试了几种解决方案,其中没有一个解决了这个问题:

将iframe.contentWindow.location

  • Adding设置为querystring

  • Adding的随机参数--querystring

  • Adding的“#”符号,在URL

  • 末尾有一个随机数,给iframe以随机名称

有人有办法解决这个恼人的火狐错误吗?还是我描述的问题与bug无关,并且有不同的解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-17 16:57:56

问题解决了,我找错地方了。加载此动态iframe的HTML文件中有一个空的iframe标记,该标记被从DOM中删除,然后注入动态iframe。

显然,Firefox缓存了这个iframe的最后一个URL,并在加载外部页面时立即加载它。我之所以知道,是因为我看到相关的HTML文件在Firebug选项卡中加载了两次,而不是在注入时加载。

在我摆脱了这个空的iframe标签并且只依赖于注入的iframe之后,一切都开始正常工作,问题不再重现。我想Firefox不喜欢处理这个场景,可能是某种bug?

无论如何,谢谢你帮我解决问题,它给了我找到正确解决方案的灵感:)

票数 1
EN

Stack Overflow用户

发布于 2010-11-17 14:35:41

如果将这个添加到脚本的底部,会发生什么?

代码语言:javascript
复制
iframe.contentWindow.location.reload(true);

也许它将停止在FF中重新装载的需要。

编辑

修正了这个例子

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4205374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档