我有两个来自同一个域的iframe,它们托管在另一个域的文档中。问题是这些iframe无法通过postMessage相互通信。我甚至无法从iframe2访问iframe1的DOM,即使它们属于同一个域。有没有解决方案????
我使用以下选项来引用所需的iframe。
parent.frame[x]
我尝试使用以下行来访问iframe的DOM
parent.frame[x].contentWindow returns null,
parent.frame[x].document.getElementsByTagName("body") returns null
更新
我想我的问题不够明确。 postMessage api没有问题,实际问题是浏览器在iframe文档周围创建了一个自定义框架集,在我的情况下!
因此parent.frame[x]
不会指向iframe窗口,而是指向iframe窗口中的自定义框架集。
以下问题很好地解释了问题。
Prevent browser from loading a custom frameset in an iframe's document
答案 0 :(得分:-1)
查看以下postMessage函数的说明以及如何使用它。所以在frame1中你调用postMessage
方法,在frame2中你订阅了通知。显然,您使用的浏览器必须支持此API。
还有一个非常好的jQuery plugin,它包装了这个API并简化了它的使用。它也可以在不支持postMessage
方法的浏览器中使用url的哈希部分。