我经常使用 window.postMessage
和“message”事件监听器在父网页与其子 IFRAME
元素中的网页之间进行跨域通信。我想知道 UIWebView 及其子 IFRAME
元素中的网页是否可以实现这一点。
最佳答案
是的,这确实是可能的。几天前我在自己的应用程序中对此进行了测试,并且成功了。
在我想要与之通信的网页上,我只是向窗口添加了一个“消息”事件监听器
监听网页上的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", *);
关于javascript - 我可以使用 window.postMessage 方法从 iframe 中的网页与包含该 iframe 的 UIWebView 进行通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694682/