2015-02-26 2 views
2

Я создаю расширение Chrome, которое позволяет пользователю управлять открытыми вкладками для приложения (веб-сайта). Манифест:chrome.windows undefined для расширения 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 в качестве разрешений, а расширение выполняется в режиме разработчика.

ответ

6

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

 

Смежные вопросы