应用程序与 Web 视图中注入的脚本之间的通信
Communication between App and injected script in a webview
我的后台脚本使用webview.executescript(injected.js)
方法在应用程序窗口内的 Web 视图中注入脚本。从注入的脚本中,我只需使用 chrome.runtime.sendMessage
即可将消息发送到应用程序。我也想从后台发送消息。我可以使用webview.ContentWindow.postMessage
但是如何处理 webview 方面的消息?当 Web 视图收到消息时,我需要执行一些操作。是否可以直接向注入的脚本发送消息?
恐怕在这种情况下无法使用传统的内容脚本chrome.tabs.sendMessage
。
您有两种方法:
-
根据 Chrome 消息传递,您可以在内容脚本和后台之间建立一个 Port 对象。这将允许双向通信,但内容脚本必须启动它。请注意,打开端口将阻止后台卸载为空闲。
-
您可以在 Web 视图中注入更多脚本,例如
function airQuotesMessageWebview(message) { webview.executeScript({code: "notReallyMessaging("+JSON.stringify(message)+");"}); }
这将触发内容脚本中的一些操作。
相关文章:
- 如何在弹出脚本到内容脚本之间发送消息并返回
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- 函数在两个或多个脚本之间进行访问
- 在这种特殊情况下,在PHP脚本之间传递值
- Chrome扩展:在后台页面和网站页面脚本之间进行通信的最佳方法
- 如何在Chrome扩展弹出窗口和内容脚本之间发送消息
- 从java脚本到C#的回调,C#和java脚本之间的异步编程
- 不了解插件和脚本之间的区别
- 原型:这两个脚本之间的区别
- 应用程序与 Web 视图中注入的脚本之间的通信
- 执行套件时脚本之间的超时 - 量角器非角度
- Chrome 扩展程序:无法让消息传递在后台脚本和内容脚本之间正常工作
- 在Chrome内容脚本和弹出脚本之间共享redux存储
- 带类型的<脚本>标记和不带类型的<脚本>之间的区别
- 使用jquery.on()方法处理同一元素(选项标记)的两个脚本之间的冲突
- 如何在Chrome扩展中的内容脚本之间重复使用代码
- 这些脚本之间的效率有差异吗
- 在两个独立的脚本之间共享变量
- chrome扩展中的可变范围,尤其是在背景页和内容脚本之间
- Chrome DevTools和扩展中的内容脚本之间的通信