javascript - 我可以使用 window.postMessage 方法从 iframe 中的网页与包含该 iframe 的 UIWebView 进行通信吗?

标签 javascript html iframe uiwebview postmessage

我经常使用 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/

相关文章:

html - iframe “YouTube search result”在Facebook应用上

iframe - 使用 SimpleModal 并打开 Iframe 时,它​​会调用 src 两次

javascript - 将 indexOf 结果与 -1、 "!="或 ">"进行比较时,首选运算符是什么?

javascript - 同位素搜索过滤器几乎弄清楚了

javascript - 从下拉列表中选择选项,具体取决于两个下拉列表,这将显示 mysql 数据库 php 中的主题选项

java - 如何将 HTML 转换为 Microsoft Word 文档?

javascript - 如何从链接打开 iframe 内的特定文件

javascript - 使用Angular js上传文件

javascript - 变量在使用之前被置空;代码似乎运行不正常

javascript - 如何将值传递给 DIV 标记中的 CLASS?