首页 > 解决方案 > 如何从后台*仅*发送消息到没有 tabId 的弹出窗口

问题描述

在 Firefox/Chrome WebExtension 中,当您从后台脚本向弹出窗口发送消息时,您不能使用 tabId,因为弹出窗口没有。所以你必须使用:

chrome.runtime.sendMessage(data)

但是所有选项卡也会收到此消息。我只想向弹出窗口发送消息。那可能吗?

标签: javascriptfirefox-addon-webextensions

解决方案


从技术上讲,这仅由扩展的页面接收。普通选项卡不会接收它们,并将消息发送到您需要的内容脚本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();
}

推荐阅读