Google chrome extension Chrome pageAction图标不显示,调试时除外

Google chrome extension Chrome pageAction图标不显示,调试时除外,google-chrome-extension,Google Chrome Extension,我试图让一个Chrome页面动作图标出现,但它只是在页面加载时短暂闪烁,然后消失 然而,让我感到困惑的是,当我使用Dev工具调试器并在chrome.pageAction.show()调用上粘贴一个断点时,它工作得非常好!这是我的manifest.json: { "manifest_version": 2, "name": "20130409-test", "description": "Page action icons don't work!", "versio

我试图让一个Chrome页面动作图标出现,但它只是在页面加载时短暂闪烁,然后消失

然而,让我感到困惑的是,当我使用Dev工具调试器并在chrome.pageAction.show()调用上粘贴一个断点时,它工作得非常好!这是我的manifest.json:

{
    "manifest_version": 2,
    "name": "20130409-test",
    "description": "Page action icons don't work!",
    "version": "0.1",
    "icons": {"16": "icon16.png", "48": "icon48.png", "128": "icon128.png"},
    "background": {
        "scripts": ["background.js"],
        "persistent": true
    },
    "permissions": [
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "page_action": {
        "default_icon": {
            "19": "icon19.png",
            "38": "icon38.png"
        },
        "default_title": "Page action title here!"
    }
}
{
“清单版本”:2,
“名称”:“20130409测试”,
“说明”:“页面操作图标不工作!”,
“版本”:“0.1”,
“icons”:{“16”:“icon16.png”、“48”:“icon48.png”、“128”:“icon128.png”},
“背景”:{
“脚本”:[“background.js”],
“持久”:正确
},
“权限”:[
"",
“网络请求”,
“webRequestBlocking”
],
“页面操作”:{
“默认_图标”:{
“19”:“icon19.png”,
“38”:“icon38.png”
},
“默认标题”:“此处的页面操作标题!”
}
}
我的background.js页面是:

chrome.webRequest.onSendHeaders.addListener(
    function(details) {
        chrome.pageAction.show(details.tabId);
        chrome.pageAction.setTitle({
            "tabId": details.tabId,
            "title": "url=" + details.url
        });
    },
    {urls: ["<all_urls>"], types: ["main_frame"]},
    ["requestHeaders"]
);
chrome.webRequest.onSendHeaders.addListener(
功能(详情){
chrome.pageAction.show(details.tabId);
chrome.pageAction.setTitle({
“tabId”:details.tabId,
“title”:“url=“+details.url”
});
},
{URL:[“”],类型:[“主框架”]},
[“请求头”]
);

当选项卡的页面卸载时,绑定到特定选项卡的页面操作将被删除

当新请求即将启动时,会触发chrome.webRequest.onSendHeaders。这意味着仍将显示上一页。调用
chrome.pageAction.show
时,当前页面的页面操作将被激活,并在加载请求的页面后立即消失

通过使用开发人员工具设置断点(或使用
调试器;
语句),
chrome.pageAction.show
被充分延迟,页面操作在加载新页面后显示

除非您希望在请求启动后立即查看URL,否则请使用或事件

方法1:内容脚本 内容脚本应仅在顶层框架中注入。最好尽快,因此使用
的“run\u at”:“document\u start”

//manifest.json的一部分
“背景”:{
“脚本”:[“background.js”]
},
“内容脚本”:[{
“matches”:[”在每次加载选项卡时被调用不止一次。最初在URL更改时调用一次,然后在每个(顶级/子)帧中调用两次。减少不必要的
chrome.pageAction
调用会很好,但没有简单的方法可供调用。

如果您只检查的值,则如果刷新页面,页面操作将不会显示。

感谢您的回复-太好了!:D