【问题标题】:Native -> JS communication in WKWebView IFramesNative -> WKWebView IFrames 中的 JS 通信
【发布时间】:2016-01-28 21:54:29
【问题描述】:

在 WKWebView 中,我们可以使用 webkit 消息处理程序 webkit.messageHandlers.<handler>.pushMessage(message). 调用 ObjectiveC/Swift 代码

这也适用于 IFrame。

有没有办法通过调用 IFrame 来响应这个问题?

目前evaluateJavaScript: API 仅支持与主框架的通信。

【问题讨论】:

  • 如果 evaluateJavaScript 只包含 JS 函数的名称和参数,那么简单的想法是在主框架中使用一些 JS 代码代理到 IFrame(s)。

标签: javascript ios webkit uikit wkwebview


【解决方案1】:

【讨论】:

  • 这个例子并没有真正涵盖框架。虽然它允许框架与本机代码通信,但它不解决从本机代码与 iframe 通信的问题。
  • 运气好@robotspacer?
【解决方案2】:

这是一个非常好的 Javascript 桥库(它支持 UIWebviewWKWebview):https://github.com/marcuswestin/WebViewJavascriptBridge

桥可以用于native to JSJS to native通信。他们做得很好,你应该看看。

在 Web 端,您必须添加一些 JavaScript 代码,以便在 HTML 端显示桥接器,他们的文档显示了要添加的 setupWebViewJavascriptBridge 方法(阅读他们自述文件的 Usage 部分)。 最后由您决定是直接在页面中添加此代码,还是通过 iOS 使用 evaluateJavaScript

【讨论】:

  • 这是一个复杂的例子,似乎在隐藏的 iframe 中打开了一个 URL,本机代码可以拦截然后从 URL 中提取数据?这不是我们这些天的最佳选择,而且我没有看到任何证据表明它解决了从本机代码与 iframe 通信的问题。
【解决方案3】:

两个不同进程之间的同步通信是not possible

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多