我正在构建一个Chrome扩展程序,允许用户管理应用程序(网站)的打开选项卡。清单是:
{
"manifest_version": 2,
"name": "AT Tabs",
"version": "0.1",
"permissions": ["activeTab", "tabs"],
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["main.js"]
}]
}
但是当我在main.js文件中执行此操作时:
console.log(chrome.windows);
我在控制台中未定义...任何想法为什么?我有两个选项卡和activeTab作为权限,扩展程序正在开发人员模式下运行。
答案 0 :(得分:10)
chrome.windows
将无法在您的main.js
中使用,因为它是一个注入的内容脚本。
只有您的background/event pages JavaScript才能访问chrome.windows
。您需要使用内容脚本中的message passing到后台脚本来触发所需的窗口操作。
例如,要从内容脚本创建窗口,您的扩展程序可能如下所示:
清单:
{
...
"background": {
"scripts": ["eventPage.js"],
"persistent": false
},
...
}
main.js:
chrome.runtime.sendMessage({
action: 'createWindow',
url: 'http://google.com'
},
function(createdWindow) {
console.log(createdWindow);
});
eventPage.js:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request && request.action === 'createWindow' && request.url) {
chrome.windows.create({url: request.url}, function (win) {
sendResponse(win);
});
}
});