chrome.windows未定义Chrome扩展程序

Cam*_*ron 4 javascript google-chrome google-chrome-extension

我正在构建一个Chrome扩展程序,允许用户管理应用程序(网站)的打开选项卡.清单是:

{
    "manifest_version": 2,
    "name": "AT Tabs",
    "version": "0.1",
    "permissions": ["activeTab", "tabs"],
    "content_scripts": [{
        "matches": ["<all_urls>"],
        "js": ["main.js"]
    }]
}
Run Code Online (Sandbox Code Playgroud)

但是当我在main.js文件中执行此操作时:

console.log(chrome.windows);

我在控制台中未定义...任何想法为什么?我有两个选项卡和activeTab作为权限,并且扩展程序正在开发人员模式下运行.

rgt*_*ree 10

chrome.windows将不会在您的,main.js因为它是一个注入的内容脚本.

只有JavaScript可以访问的后台/活动页面chrome.windows.您需要使用从内容脚本传递到后台脚本的消息来触发所需的窗口操作.

例如,要从内容脚本创建窗口,您的扩展名可能如下所示:

表现:

{
  ...
  "background": {
    "scripts": ["eventPage.js"],
    "persistent": false
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

main.js:

chrome.runtime.sendMessage({
    action: 'createWindow',
    url: 'http://google.com'
  },
  function(createdWindow) {
    console.log(createdWindow);
  });
Run Code Online (Sandbox Code Playgroud)

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);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)