【问题标题】:chrome.windows undefined for Chrome Extensionchrome.windows 未定义 Chrome 扩展
【发布时间】:2016-03-03 04:18:36
【问题描述】:

我正在构建一个 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 作为权限,并且扩展程序正在开发人员模式下运行。

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

    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);
        });
      }
    });
    

     

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2016-04-05
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多