我经常使用window.postMessage
和“消息”事件侦听器在父网页与其子IFRAME
元素中的网页之间跨域进行通信。我想知道 UIWebView 及其子IFRAME
元素中的网页是否可以做到这一点。
问问题
3624 次
1 回答
4
是的,这确实是可能的。几天前,我在自己的应用程序中对此进行了测试,并且成功了。
在我想与之通信的网页上,我只是在窗口中添加了一个“消息”事件侦听器
监听网页上的 UIWebView 消息
window.addEventListener("message", onmessage, false);
window.onmessage = function(e){
// e.data contains message
// e.origin will equal NULL as theres no domain in UIWebView
}
UIWebView 只需要抓取嵌入的 iFrame 对象的窗口并在其上调用 postMessage:
iFrameObject.contentWindow.postMessage("message", http://webpageDomain...);
反过来,UIWebView 中的 html 实现也需要像上面的代码一样监听消息。这次 e.origin 将是网页的域。
网页只需要以 * 作为 targetDomain 调用以下内容,因为 UIWebView 不会有。
parent.postMessage("message", *);
于 2012-08-03T21:10:54.240 回答