html - 在加载之前在 iframe 上设置 webkit
问题描述
我试图模仿 wkwebview 在 iOS 上对 webclient 上的 iframe 所做的事情。
本质上发生的事情是在加载 iframe 之前,它会注入 iOS 客户端可以读取的函数。
在 iframe 中加载的页面上,它调用一个函数来与 iOS 客户端通信。
if (window.webkit) {
window.webkit.messageHandlers.interOp.postMessage(chatMsg);
} else if (window.parent) {
window.parent.postMessage(chatMsg, '*');
}
我不希望它落入 else window.parent 块,因为 postMessage 从扩展和其他应用程序中获得了相当多的流量。
我想将相同的webkit.messageHandlers.interOp.postMessage
功能添加到 Iframe 的窗口对象并在该级别上进行侦听。
iframe 域和 WebClient 域是不同的。
另一种方法是只收听 Iframe 调用的 postMessage 调用。欢迎任何想法谢谢。
解决方案
如果它是同域 iframe,那么您只需将一个函数分配给父窗口,如下所示:
window.iframeMessageReceiver = msg => alert(`Message received from iframe: ${msg}`)
然后在 iframe 的 if 块中调用此函数:
parent.iframeMessageReceiver(chatMsg)
推荐阅读
- weblogic - WebLogic Server 版本:12.2.1.0.0 - 检索管理控制台密码
- java - DataFlow Apache Beam Java JdbcIO 读取参数问题
- android - 采取正确的截图
- wpf - wpf中的多种样式
- mysql - 带分组的 SQL 子查询
- delphi - Delphi XE2 TCPServer 在午夜执行程序
- postgresql - Mac 中的 postgres 设置
- batch-file - 如何使用 7 zip 在另一台服务器上解压缩文件?
- ios - 调用委托后应用程序崩溃
- javascript - 当用户在弹出窗口之外单击以关闭它时返回滚动条