【发布时间】:2013-03-09 10:00:16
【问题描述】:
看起来这是一个 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 方法进行通信。
它运行良好,直到 .. 在 iPhone 上用 Firefox 打开。带有库的页面开始,然后神奇地被重定向。
好吧,我已经进入代码并尝试找出问题:
动态添加 iframe 父重新加载到 iframe src 后。我已经测试了以下内容:
-
document.createElement('iframe')附加到文档 -
document.createElement('iframe')附加到预先创建的 div -
.innerHTML方法,其中包含预先创建的 iframe 代码 -
frames['iframe_name'].location.src带有空 src 的预创建 iframe -
.location.assign()-
document.getElementById()fails -
frames['iframe_name']重定向
-
- 与 jquery 相同
$('<iframe src="link"/>'). appendTo('#reportA'); - 也试过先创建不带src的iframe然后设置
- 还更新为
$('#iframe').attr('src','link')导致重定向
此外,我在日志中看到(iframe 中称为页面是日志状态)。 实际上有两个调用,所以看起来首先附加的 iframe 读入,然后在新页面中打开 iframe src。
在剖析我的代码时,我发现在部分代码中创建 iframe 时会出现问题,这是由我的 js 加载程序动态添加的。我使用了以下附加脚本
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() 上附加 iram - 当与 document.write 方法一起使用时,它工作正常,直到在 setTimeout 中调用附加
更奇怪的是,当在主静态 js 文件中使用 setTimeout() 时,会发生同样的事情。我今天试试setInterval() 看看会发生什么。
因此,很明显 iframe 的 src 上的任何更改都会导致父级重新加载,即使 iframe 是预先创建的。任何想法为什么?
ps。抱歉有些不全面的句子,但我对这个问题很感兴趣
【问题讨论】:
-
只是一个想法,但是您是否尝试过使用
.location.assign(string url) 更改 url / src -
所以您是说当您尝试更改 iframe 上的
src属性时,父页面会重新加载?如果您保持所有脚本不变并且只注释掉 iframe src 更改的行,那么一切正常(当然除了 iframe)? -
使用预先创建的 iframe,但将初始 src 属性设置为实际页面,即。 www.yourdomain.tld/blank.htm 然后当你用 $('#premadeIframeID').attr('src', newURL);应该没问题。
-
克里斯:是的,evetyrhing 工作正常,直到 iframe appaeding - 我已经评论了几乎所有的库,只留下了 elf 诊断功能,10 秒后触发,看是过程。它在domainA上运行,如果发现问题,将iframe附加到domainB,err_code在url中传递
-
Lastcoder - 不能这样做,我在客户端域上运行,我不允许预先创建任何东西。但我会尝试使用 jQuery 更改 src。
标签: javascript iphone firefox iframe reload