2017-02-09 41 views
1

我认为这将是一个经常问到的问题,但我无法找到答案。 有没有一种方法可以让Chrome浏览器扩展程序的浏览器操作弹出窗口仅在content_scripts匹配页面上可用?仅在“content_script”上激活的浏览器操作匹配

例如:我为网站做了扩展。我希望弹出窗口仅在浏览网站时可用(在当前选项卡上)。我该怎么做?

对于我来说,默认情况下浏览器操作始终处于启用状态,无论我正在浏览哪个页面,页面操作都未启用。

感谢您的帮助

编辑:这里是清单的一部分,我没有成功pageAction改变。我希望我的图标仅在浏览LDLC的标签上激活。

{ 
    "content_scripts": [ 
    { 
     "js": [ "jquery.min.js", "scrooge.js" ], 
     "matches": [ "*://www.ldlc.com/fiche/*", "*://ldlc.com/fiche/*" ] 
     }], 

    "manifest_version": 2, 

    "permissions": [ "storage", "activeTab","*://ldlc.com/*", "*://scroogealpha.esy.es/*" ], 

    "page_action": { 
      "default_title": "Worth buying?",  // optional; shown in tooltip 
      "default_popup": "popup.html"  // optional 
    }, 

    "web_accessible_resources": [ 
    ], 
    "background":{ 
    "scripts" : ["eventPage.js"], 
    "persistent": false 
    } 
} 
+0

请参阅[declarativeContent API](https://developer.chrome.com/extensions/declarativeContent)。 – wOxxOm

回答

0

使用页面操作并在后台脚本中监听标签更改。当标签网址更改时,请检查您是否要显示网页操作。

在你的后台脚本做这样的事情:

let matches = ["://www.ldlc.com/fiche/", "://ldlc.com/fiche/" ] 
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { 
    for (let i in matches) { 
     if (tab.url.includes(matches[i])) { 
      chrome.pageAction.show(tabId) 
      break 
     } 
    } 
}) 

还要添加标签许可,您的清单。

+0

我使用了一个事件脚本页面,而不是一个背景脚本,它似乎对此更有意义 – yhu420