javascript - 如何从后台*仅*发送消息到没有 tabId 的弹出窗口
问题描述
在 Firefox/Chrome WebExtension 中,当您从后台脚本向弹出窗口发送消息时,您不能使用 tabId,因为弹出窗口没有。所以你必须使用:
chrome.runtime.sendMessage(data)
但是所有选项卡也会收到此消息。我只想向弹出窗口发送消息。那可能吗?
解决方案
从技术上讲,这仅由扩展的页面接收。普通选项卡不会接收它们,并将消息发送到您需要的内容脚本tabs.sendMessage
。
也就是说,您可以使用extension.getViews
来获取弹出窗口的window
对象并直接在那里调用某些东西。
请参阅https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extension/getViews
var windows = chrome.extension.getViews({type: "popup"});
if (windows.length) {
windows[0].something();
}
推荐阅读
- javascript - 想用更好的算子优化 Airtable 查询
- nuget-package-restore - NuGetAuthenticate 管道失败,无法获取本地颁发者证书
- docker - docker push to private registry 失败“服务器向 HTTPS 客户端提供 HTTP 响应”
- javascript - 画布上最后绘制的线是实心的?
- google-sheets - 如何避免必须将 0 放入 NULL 字段以在 Google 表格中获得正确的查询计算
- .net - Web 浏览器自动刷新崩溃
- asp.net-core - 以分块形式发送响应时,Asp.net 核心端点“挂起”
- swift - 如何根据 CollectionViewController 中的滚动距离移动到下一个单元格?
- sql-server - Azure-SSIS IR 部署:项目的目标服务器版本不受支持
- angular - 什么会使用 Angular Material 触发 Chrome 地址自动填充弹出窗口