加载前在iframe上设置Webkit

时间:2018-08-16 18:56:53

标签: html ios reactjs iframe wkwebview

我试图将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调用。任何想法都欢迎,谢谢。

1 个答案:

答案 0 :(得分:0)

如果它是同域iframe,则只需将一个函数分配给父窗口,如:

window.iframeMessageReceiver = msg => alert(`Message received from iframe: ${msg}`)

然后在iframe的if块中调用此函数:

parent.iframeMessageReceiver(chatMsg)