隐藏pageAction时显示点击弹出窗口(灰色,不活动)

时间:2018-08-16 13:58:45

标签: google-chrome google-chrome-extension

我正在尝试开发一个简单的chrome扩展程序,该扩展程序将在几个网站上启用,并在单击时打开另一个页面(在新标签中)。到目前为止,它与Google's tutorial十分相似。

Google's tips之后,我对该扩展名使用了“仅对少数几个页面有意义”的页面操作,而对于这几个网站,我使用declarativeContentShowPageAction()(主办)。这可行。在选定的站点中,该图标已启用,单击后将打开新选项卡。在其余站点中,该图标显示为灰色,并且单击该图标时,仅显示该扩展名和菜单(选项,删除扩展名等)。

但是我也想为那些扩展名无效的站点显示一个弹出窗口(只是一个纯HTML解释扩展名在该页面中不起作用以及为什么)。问题在于onClicked事件“ will not fire if the page action has a popup”。因此,为了使扩展程序的主要功能正常工作(单击后在新选项卡中打开新页面),我必须删除manifest.json中的默认弹出窗口,但我不知道如何为网站添加弹出窗口扩展名无效的地方。

这是我现在正在使用的代码。

manifest.json

  {
    "name": "Getting Started Example",
    "version": "1.0",
    "description": "Build an Extension!",
    "permissions": ["storage", "declarativeContent", "tabs"],
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "page_action": {
      "default_icon": {
        "16": "images/get_started16.png",
        "32": "images/get_started32.png",
        "48": "images/get_started48.png",
        "128": "images/get_started128.png"
      }
    },
    "manifest_version": 2
  }

background.js

  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: {hostEquals: 'developer.chrome.com'},
      })
      ],
          actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

// listen to onClicked event ...
// ... but "This event will not fire if the page action has a popup." 
// see https://developer.chrome.com/extensions/pageAction#event-onClicked
chrome.pageAction.onClicked.addListener(function(activeTab) {
  var newURL = "http://www.youtube.com/";
  chrome.tabs.create({ url: newURL });
});

0 个答案:

没有答案