Я открываю расширение в новом окне. Background.js
chrome.browserAction.onClicked.addListener(function(msg, sender, response){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {tabId: tabs[0].id}, function(response) {});
// creating new window.
chrome.windows.create({ url: 'popup.html', width: 320, height: 480})
})
})
Перед открытием нового окна идентификатор вкладки будет идентификатором активной вкладки, что означает, что я открыл расширение Chrome (например, google.com). Я пытаюсь получить доступ к этому идентификатору вкладки в popup.js. Потому что я хочу получить доступ к DOM страницы (google.com), на которой открыто расширение Chrome. Как я могу это сделать? или есть другой способ получить идентификатор вкладки в popup.js?
Пробовал другой способ в popup.js
chrome.windows.getAll({populate:true}, function(tabs){
console.info(tabs)
});
Здесь я получаю все вкладки окон в popup.js, но здесь я не знаю идентификатор вкладки, на которой открыто расширение (google.com)?
Всплывающее окно - это полностью новое окно, оно не будет частью окна, в котором я открыл расширение Chrome.
Ах. Вы можете передать идентификатор через параметр url, например url: 'popup.html#' + tab.id, а затем извлечь его в свой popup.js. Или вы можете отправить сообщение, но это более запутанно.
Спасибо, что тоже работает. Но я решил по-другому, спасибо.





На самом деле это очень просто
chrome.tabs.query({active: true}, function(tabs){})
Он предоставляет все активные вкладки окна и доступ к DOM другого окна (google.com)
chrome.tabs.query({active: true}, function(tabs){
chrome.tabs.executeScript(tabs[0].id,{ //tabs[0].id will give the tab id where extension is opened.
code: 'document' // any javascript statement
})
})
chrome.windows.create({ url: 'popup.html', width: 320, height: 480})создаст новое окно справа. Если я используюchrome.tabs.getCurrent, он предоставляет текущий объект всплывающего окна, а не объект google.com.