拦截 browserAction.onClicked 以防止显示扩展页面

Intercept browserAction.onClicked to prevent display of extension page

当单击我的 Chrome 扩展程序的 browserAction 图标时,我想阻止它显示 browserAction 弹出窗口。我正在尝试使用 browserAction 图标来触发内容脚本的加载。

我该怎么做?

以下不会阻止它打开:

chrome.browserAction.onClicked.addListener(function (tab) {
  alert('browserAction clicked');

  return false;
});

这是我的 manifest.json 条目:

  "browser_action": {
    "default_icon": {
      "19": "images/icon-19.png",
      "38": "images/icon-38.png"
    },
    "default_title": "My extension"
  }

文档说 This event will not fire if the browser action has a popup,但是,如您所见,我没有定义弹出窗口,但它仍然不起作用。

当您按下 the extension button 时,会发生以下情况。

  1. 如果您为当前选项卡定义了弹出窗口(例如,通过清单中的 default_popup 键或 chrome.browserAction.setPopup),则会显示该弹出窗口。 chrome.browserAction.onClicked 未提出 .

  2. 如果当前选项卡的弹出窗口未设置(或设置为空),则调度 chrome.browserAction.onClicked

因此,要永久禁用此功能,您只需从清单中删除 default_popup。要以编程方式禁用它,您需要取消设置它:

chrome.browserAction.setPopup({
  popup: "",
  // tabId: id // optional, restrict to a single tab
});