iFrames之间的沟通?

Mat*_*hew 12 html javascript iframe

你怎么能让两个iFrame相互通话?例如,我是第二个iframe的元素值,第一个iframe上有显示元素.我需要从第2帧到第1帧获得值.我该怎么做?不要说使用cookies,因为大量数据会造成伤害.

jba*_*bey 22

如果<iframe>元素是从同一个域提供的,那么它们可以直接相互访问.例如,iframe1您可以这样做:

document.getElementById('someDiv').innerHTML = 
    top.document.getElementById('otherIframe').contentWindow.
    document.getElementById('someOtherDiv').innerHTML;
Run Code Online (Sandbox Code Playgroud)

  • 不,它给你最顶层的框架,可能是父母或一些祖父母等.考虑你刚才提到的所有加载在另一个iframe中的设置(我们无法控制谁可能在iframe中加载我们的页面),top将返回那个最外面的页面可能没有'otherIframe'可以找到(甚至可能不满足CORS要求).使用`parent`而不是`top`可能会略微好一些,因为它可以保证你正在做你认为自己正在做的事情. (18认同)

Kat*_*314 5

我先警告你,你需要为两个iframe提供完整的代码修改能力.iframe受到严格的安全处理; 否则,我可以创建一个域名"bunkofamerica.com",将"bankofamerica.com"放在iframe中,然后在键入时分析用户的密码.(无论如何,银行倾向于使用iframe破坏代码,但仍然......)

您正在寻找这个本机功能:https: //developer.mozilla.org/en-US/docs/Web/API/window.postMessage

这是我公司用来实现更多跨浏览器兼容的github库:https://github.com/daepark/postmessage

jbabey是正确的,如果iframe在同一个域和协议中,那么它就更容易了.

Opera Docs用最佳相关示例解释了这一点https://dev.opera.com/articles/window-postmessage-messagechannel/#channel