我试图将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调用。任何想法都欢迎,谢谢。
答案 0 :(得分:0)
如果它是同域iframe,则只需将一个函数分配给父窗口,如:
window.iframeMessageReceiver = msg => alert(`Message received from iframe: ${msg}`)
然后在iframe的if块中调用此函数:
parent.iframeMessageReceiver(chatMsg)