Javascript 无背景页的chrome扩展选项卡

Javascript 无背景页的chrome扩展选项卡,javascript,google-chrome-extension,Javascript,Google Chrome Extension,有没有办法为一个网站定义pageAction?我看到了这些示例,它们都使用background.js在该文件中显示chrome.pageAction.show(tabId) 要显示特定网站的页面操作,有两种方法 使用内容脚本 在特定网站上运行内容脚本,并将请求页面操作的消息传递到后台: // contentscript.js chrome.extension.sendMessage('showPageAction'); // background.js chrome.extension.onMe

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

要显示特定网站的页面操作,有两种方法

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

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});
// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});
manifest.json的一部分:

"content_scripts": [{
    "js": ["contentscript.js"],
    "run_at": "document_start",
    "matches": ["http://example.com/"]
}]
匹配的有效值在文档中有明确定义。
注意,本例中的匹配模式匹配
http://example.com/
而非
http://example.com/index.html
。如果要匹配网站上的任何内容,请使用
http://example.com/*
(附加星号)

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

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});
// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});
我建议使用内容脚本方法,除非您已经在使用API。为什么?如果您在清单文件中请求
“tabs”
权限,用户将在安装时看到以下警告:

安装

  它可以访问:
访问选项卡和浏览活动


要显示特定网站的页面操作,有两种方法

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

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});
// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});
manifest.json的一部分:

"content_scripts": [{
    "js": ["contentscript.js"],
    "run_at": "document_start",
    "matches": ["http://example.com/"]
}]
匹配的有效值在文档中有明确定义。
注意,本例中的匹配模式匹配
http://example.com/
而非
http://example.com/index.html
。如果要匹配网站上的任何内容,请使用
http://example.com/*
(附加星号)

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

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});
// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});
我建议使用内容脚本方法,除非您已经在使用API。为什么?如果您在清单文件中请求
“tabs”
权限,用户将在安装时看到以下警告:

安装

  它可以访问:
访问选项卡和浏览活动

所以答案是,不;)总是想知道为什么页面操作不能像内容脚本那样有匹配键。另外,如果你的背景页面要做的就是这样,那么看看事件页面,这样它就不会在不需要的时候挂在那里。所以答案是,不;)总是想知道为什么页面操作不能像内容脚本那样有匹配键。另外,如果你的背景页面要做的就是这样,那么看看事件页面,这样它就不会在不需要的时候挂起。