动态添加iframe时需要重新加载页面

时间:2013-03-20 10:46:06

标签: javascript iphone firefox iframe reload

看起来它是一个Firefox Home严格的问题,并且由于Mozzilla放弃了对它的支持并在iStore中将其删除,我认为没有必要尝试解决方法(http://thenextweb.com/apps/2012/08/31/mozilla-retires-firefox-home-ios-releases-source-code-github/),无论如何我已经向他们发布了错误(https://bugzilla.mozilla.org/show_bug.cgi?id=853377),如果有人有兴趣关注/解决


我使用iframe方法进行了很好的交叉浏览库。

它起作用beatifull直到..在iPhone上用Firefox打开。带有库的页面开始,然后神奇地被重定向。

我已经进入代码并尝试识别问题:

将iframe父级重新加载到iframe src后动态添加。我测试了以下内容:

  1. document.createElement('iframe')附加到文档
  2. document.createElement('iframe')附加到precreated div
  3. .innerHTML方法,其中包含预先创建的iframe代码
  4. frames['iframe_name'].location.src使用带有空src的预先创建的iframe
  5. .location.assign()
    • document.getElementById()失败
    • frames['iframe_name']重定向
  6. 与jquery相同 $('<iframe src="link"/>'). appendTo('#reportA');
  7. 尝试首先创建没有src的iframe,然后设置它
  8. 还会使用$('#iframe').attr('src','link')导致重定向更新
  9. 此外,我在日志上看到(在iframe中称为页面正在记录状态)。 实际上有两个调用,所以看起来首先是附加的iframe读入,然后在新页面中打开iframe src。

    在解析我的代码时,我发现在部分代码中创建iframe时会出现问题,这是由我的js loader动态添加的。我使用了以下附加脚本

    var head = document.getElementsByTagName("head")[0];  
    var script = null;  
    script = document.createElement('script');  
    script.type = 'text/javascript';  
    var tag = Math.round(new Date().getTime() / 1000);  
    script.src =  GLOBAL_VARIABLE_WITH_PATH_TO_URL+'jsc/include.js?'+tag ;  
    head.appendChild(script);
    

    也尝试了

     document.write("<script src='"+FUTUREclickINFOpathS+"fcijsc/fci-include.js?"+tag+"'><\/script>");
    

    更新

    还尝试在jquery $(document).ready()上附加irame - 当与document.write方法一起使用时,它可以正常工作,直到调用setTimeout中的附加

    更奇怪的是,在主静态js文件中使用setTimeout()时,会发生同样的事情。我今天会尝试setInterval(),看看发生了什么。

    很明显,iframe的src上的任何更改都会导致父重新加载,即使iframe是预先创建的。有什么想法吗?

    PS。对于一些不完整的句子感到抱歉,但是我的头脑缠绕着这个问题

1 个答案:

答案 0 :(得分:0)

您是否使用postMessage从iframe与父母进行通信?我遇到了这个并注意到从iframe的脚本中删除parent.postMessage修复了它。如果我找到一个,我会更新一种方法来解决这个问题。