【问题标题】:Communication between App and injected script in a webviewWebview 中 App 和注入脚本之间的通信
【发布时间】:2023-03-17 23:26:01
【问题描述】:

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

【问题讨论】:

    标签: javascript google-chrome-extension webview


    【解决方案1】:

    恐怕解决内容脚本的传统方式chrome.tabs.sendMessage 在这种情况下不可用。

    您有两种方法:

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

    2. 您可以将 more 脚本注入 webview,例如

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

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

    【讨论】:

    • 哪个性能更好?发送多条消息并将作业留给单个脚本或执行多个脚本而不传递消息?
    • 您必须对其进行测试,但“几个脚本”无论如何都会按顺序执行。
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2019-05-25
    • 2019-03-26
    相关资源
    最近更新 更多