哪些是确定的最佳方法?iframe
页面正在显示的DOM元素?
我需要在iframe的内容被显示时通知父窗口 真的 完成加载(iframe onload
看起来像一个WebKit的骗局)。)
考虑以下情况。
也欢迎对这种帧间通信的替代解决方案提出建议。
我面临的一个问题是,Safari Chrome WebKit 浏览器显然会启动 iframe 的 onload
事件太早--我试着将表单数据(带文件上传)发送至iframe,结果发生了 onload
处理程序清除 <input type="file" />
元素的值,并破坏iframe,导致表单的提交被 夭折所以我不能使用 onload
在这种情况下(顺便说一下,这是一个功能还是一个错误?)。
另一种情况是iframe做了一些事情,并希望与父元素交互。
像Stefaan id说 window.parent
但你应该检查 window.frameElement 也。
有了 window.parent 你可以得到父窗口。你也可以调用它的方法。因此,通过下面的代码,你可以通知iframe父窗口你已经完成了加载(你需要在父窗口中有一个notifyLoaded函数。
window.parent.notifyLoaded(window);
因为我们给了自己的窗口,所以父窗口可以循环所有已知的iframe,并检查哪一个已经加载完毕(使用 iframe.contentWindow 来获取某个iframe的窗口)
一个框架和它的父框架之间有几种沟通方式。
最简单的是如果两者都有相同的 document.domain
设置,在这种情况下,他们可以直接通信。
如果没有,有几种不同的方法来进行跨域通信,例如通过设置读取iframe url的hash-component。
你可以走遍父文档中的所有iframe元素,然后将iframe元素的contentWindow属性与iframe中的window-object进行比较(应该是相等的,但我还没有测试)
P.S.:现在测试了一下,工作正常。http:/www.jsfiddle.netdoktormolleCMdLZ