代码之家  ›  专栏  ›  技术社区  ›  Joshua Fermin

加载前在iframe上设置webkit

  •  0
  • Joshua Fermin  · 技术社区  · 6 年前

    我试图模仿iOS上的wkwebview在webclient上的iframe。

    实际上,在加载iframe之前,它会注入一个iOS客户端可以读取的函数。

    在iframe中加载的页面上,它调用一个函数与iOS客户机通信。

    if (window.webkit) {
        window.webkit.messageHandlers.interOp.postMessage(chatMsg);
    } else if (window.parent) {
        window.parent.postMessage(chatMsg, '*');
    }
    

    我不想让它落入另一个世界窗口.父级阻塞,因为postMessage从扩展和其他应用程序获得相当多的通信量。

    我想向Iframe的窗口对象添加相同的 webkit.messageHandlers.interOp.postMessage 在这个层次上运作和倾听。

    Iframe域和WebClient域是不同的。

    另一种方法是只监听Iframe调用的postMessage调用。欢迎有任何想法,谢谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   OzySky    6 年前

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

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

    在iframe的if块中调用这个函数:

    parent.iframeMessageReceiver(chatMsg)