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

时间:2016-03-09 03:02:29

标签: javascript google-chrome google-chrome-extension

我是谷歌Chrome扩展程序开发的新手。我正在进行以下两个查询

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

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

  3. 的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/"
      ]
    }
    

    更新

    感谢Teepemm。按照他的解释,并用代码

    添加答案

2 个答案:

答案 0 :(得分:7)

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

您需要通过从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"});

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

希望这有帮助

答案 1 :(得分:6)

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

您选择了一个不幸的时间来制作Chrome页面操作。 Google recently changed页面操作如何运作,文档还没有真正赶上。以前,页面操作会显示在地址栏中,并且只显示在您调用show的标签上。现在,页面操作显示在地址栏的右侧(除非您将它们移动到镶边菜单中),始终存在,但仅在您调用show时才有效。因此,这些函数仍被称为showhide,即使它们的效果更类似于enabledisable