应用程序与Webview中注入的脚本之间的通信

时间:2016-02-01 01:07:36

标签: javascript google-chrome-extension webview

我的后台脚本使用webview.executescript(injected.js)方法在应用程序窗口内的webview中注入脚本。从注入的脚本中,我只需使用chrome.runtime.sendMessage即可向应用发送消息。 我也想从后台发送消息。我可以使用webview.ContentWindow.postMessage,但如何处理webview的消息?我需要在webview收到消息时执行一些操作。是否可以直接向注入的脚本发送消息?

1 个答案:

答案 0 :(得分:1)

我担心在这种情况下,传统的内容脚本chrome.tabs.sendMessage的处理方式不可用。

您有两种方法:

  1. 保持Chrome消息传递,您可以在内容脚本和后台之间establish a Port object。这将允许双向通信,但内容脚本必须启动它。请注意,打开一个端口会使后台停止卸载为空闲状态。

  2. 您可以将更多脚本注入网页视图,例如

    function airQuotesMessageWebview(message) {
      webview.executeScript({code: "notReallyMessaging("+JSON.stringify(message)+");"});
    }
    

    将在内容脚本中触发一些操作。