我已经创建了一个Chrome扩展程序,作为其操作的一部分,它将打开一个带有指定URL的新标签页。
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "open_new_tab" ) {
chrome.tabs.create({"url": request.url});
}
}
);
(完整代码可在GitHub上获得)
这在带有网页的标签页上可以正常使用,但是我无法使它在空标签页上正常工作,例如:chrome://apps/
要澄清一下,如果我打开了一个标签页并且它在stackoverflow.com上,那么当我单击扩展按钮时,它会打开一个新标签页加载生成的网址。当我使用新标签或网址开头的标签时,chrome://
扩展名不起作用。
我需要包括什么权限才能允许扩展在ANY选项卡中打开?包括新标签和任何chrome://
标签?
Manifest.json:
{
"manifest_version": 2,
"name": "MyMiniCity Checker",
"short_name": "MyMiniCity Checker",
"description": "Checks what your city needs most and redirects the browser accordingly.",
"version": "0.2",
"author":"Richard Parnaby-King",
"homepage_url": "https://github.com/richard-parnaby-king/MyMiniCity-Checker/",
"icons": {
"128": "icon-big.png"
},
"options_page": "options/options.html",
"browser_action": {
"default_icon": "icon.png"
},
"permissions": ["tabs","storage","http://*.myminicity.com/","http://*/*", "https://*/*"],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [ {
"matches": [ "http://*/*", "https://*/*"],
"js": [ "jquery-1.11.3.min.js" ]
}]
}
Background.js:
//When user clicks on button, run script
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "jquery-1.11.3.min.js" }, function() {
chrome.tabs.executeScript(null, { file: "contentscript.js" });
});
});
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "open_new_tab" ) {
chrome.tabs.create({"url": request.url});
}
}
);
好像没有执行background.js文件。我怀疑这是一个权限。为了在每个选项卡中运行此扩展程序,我需要什么权限?
因为我希望此代码在每个页面上运行,所以这意味着内容脚本中没有代码。我将所有代码移到了后台脚本中:
chrome.browserAction.onClicked.addListener(function(tab) {
//...
chrome.tabs.create({"url": newTabUrl});
//...
});
因此,当我单击按钮时,使用随附的jquery脚本调用了上面的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句