我试图让我的Chrome扩展程序在用户http://google.com/上时弹出警告,然后点击扩展程序图标。
我有以下清单:
{
"manifest_version": 2,
"name": "One Megahurt",
"version": "0.1",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["bg.js"],
"persistent": false
},
"browser_action": {
"default_icon": "icon.png"
}
}
这是bg.js:
chrome.browserAction.onClicked.addListener(function(tab) {
alert('Test!');
})
此代码允许在任何网站上弹出提醒,因为我对这些网站没有任何限制。我尝试使用
if(tab.url === "https://google.com/")
在第一行和第二行之间,但是没有用。
我不确定我是否应该使用后台脚本而不是内容脚本。我查看了Google的示例,并尝试使用URL"中的" Page动作实现,但这对我来说也不起作用。
任何帮助将不胜感激。我应该注意,我并不真正关心网址的具体问题--Google.com只是一个例子。我想学习将其用于其他项目和网站。
编辑:向权限添加网址并不会限制警报弹出的网站。
答案 0 :(得分:1)
除了向清单中的权限添加域外,还要将以下代码添加到background.js
。
// When the extension is installed or upgraded ...
chrome.runtime.onInstalled.addListener(function() {
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
// With a new rule ...
chrome.declarativeContent.onPageChanged.addRules([
{
// That fires when a page's URL matches one of the following ...
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlMatches: 'http://google.com/' }, // use https if necessary or add another line to match for both
}),
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlMatches: 'http://facebook.com/*' },
}) // continue with more urls if needed
]
// And shows the extension's page action.
actions: [ new chrome.declarativeContent.ShowPageAction()]
}
]);
});
});
chrome.pageAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "script.js" });
});
要在manifest.js
中添加的关键部分是:
"background": {
"scripts": ["res/background.js"],
"persistent": false
}
&安培;
"permissions": [
"declarativeContent", "tabs", "activeTab", "http://google.com", "http://facebook.com/*"
]
答案 1 :(得分:0)
我对此没有多少经验,但看看我见过的示例清单,他们通常会在权限下拥有一个域列表。我敢打赌,如果你使用:
"permissions": ["http://www.google.com/", "https://www.google.com/", https://google.com, https://google.com],
它只会在允许的页面上运行代码。
来自的示例: http://developer.chrome.com/extensions/overview
更详细的信息: http://developer.chrome.com/extensions/declare_permissions