1

有没有办法为一个网站定义 pageAction?我看到了样本,它们都用于在该文件background.js中显示。chrome.pageAction.show(tabId)

4

1 回答 1

1

要显示特定网站的 pageAction,有两种方法。

使用内容脚本

在特定网站上运行内容脚本,并向后台传递一条请求页面操作的消息:

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});

部分manifest.json

"content_scripts": [{
    "js": ["contentscript.js"],
    "run_at": "document_start",
    "matches": ["http://example.com/"]
}]

的有效值在文档match patternsmatches中完全定义。请注意,此示例中的匹配模式匹配而不是如果您想匹配网站上的任何内容,请使用(附加星号)。
http://example.com/http://example.com/index.htmlhttp://example.com/*

使用chrome.tabsAPI

如果您不想使用内容脚本,可以使用chrome.tabs事件来显示页面操作:

// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});

我推荐使用内容脚本方法,除非您已经在使用chrome.tabsAPI。为什么?如果您"tabs"在清单文件中请求权限,您的用户将在安装时看到以下警告:

安装<name of your extension>
  它可以访问:
访问您的标签和浏览活动

于 2012-12-15T21:03:47.227 回答