我是谷歌Chrome扩展程序开发的新手。我正在进行以下两个查询
当我在manifest.json中使用page_action
但在使用browser_action
时出现时,弹出窗口没有出现。我想知道为什么?或者我做错了
此图标也显示无效状态。当我使用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/"
]
}
更新
感谢Teepemm。按照他的解释,并用代码
添加答案答案 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
时才有效。因此,这些函数仍被称为show
和hide
,即使它们的效果更类似于enable
和disable
。