使用page_action时不会显示弹出窗口

Gop*_*iva 4 javascript google-chrome google-chrome-extension

我是谷歌Chrome扩展程序开发的新手.我有以下两个问题

  1. 当我page_action在manifest.json中使用时弹出窗口没有出现,但在我使用时出现browser_action.我想知道为什么?或者我做错了

  2. 此图标也显示非活动状态.当我使用时browser_action,图标显示处于活动状态(意味着我可以看到颜色,如果激活,或者我可以看到黑白图标,当不活动时)

的manifest.json

{
  "manifest_version": 2,

  "name": "Getting started example",
  "description": "This extension shows a Google Image search result for the current page",
  "version": "1.0",

  "page_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html",
    "default_title":"getStarted Extension"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/"
  ]
}
Run Code Online (Sandbox Code Playgroud)

更新:

感谢Teepemm.按照他的解释,并用代码添加答案

Gop*_*iva 9

感谢Teepemm指导我正确解释,所以为了使图标处于活动状态和非活动状态,您必须使用chrome.pageAction.show(tabId)(激活图标)和chrome.pageAction.hide(tabId)(停用图标)=> https://developer.chrome.com/扩展/ pageAction#方法出现

您需要通过从client.js调用此方法从background.js调用此方法

//background.js
chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {
    if (request.message === "activate_icon") {
        chrome.pageAction.show(sender.tab.id);
    }
});

//content-script.js
chrome.runtime.sendMessage({"message": "activate_icon"});
Run Code Online (Sandbox Code Playgroud)

因此,一旦您的扩展图标处于活动状态,单击该图标将显示弹出窗口.因此,仅当图标处于活动状态时,弹出窗口才会出现.

希望这可以帮助


Tee*_*emm 7

您需要使用后台页面(或更好的事件页面)来调用chrome.pageAction.show.

你选择了一个不幸的时间来开发一个chrome页面动作.Google 最近改变了页面操作的工作方式,而且文档还没有真正赶上.以前,页面操作出现在地址栏中,并且只出现在您调用的选项卡上show.现在,页面操作显示在地址栏的右侧(除非您将它们移动到镶边菜单中),始终存在,但仅在您调用时才处于活动状态show.因此,功能仍称showhide,尽管他们的作用更类似于enabledisable.