0

Всегда получаю undefined, пробовал разными популярными способами, например:

var tabId = chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
   return tabs[0].id;
});

Необходимо при клике на ссылку из popup открыть другую страницу и в ней получить url или tabId(что бы получить url) активной вкладки.

Права приложения стоят activeTab, tabs

rodigy
  • 448
  • 2
  • 12

1 Answers1

1

Метод chrome.tabs.query является асинхронным. Это значит что вы не можете вернуть из него значение через return (синхронно).

Пример рабочего варианта:

var tabId; 
chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
   tabId = tabs[0].id;
   myAction(); // код, который зависит от tabId
});

function myAction() {
    // тут уже можно работать с полученным tabId
}

Также, можно передать tabId в myAction в качестве аргумента, что будет корректнее.

Рекомендую ознакомиться с вопросом: "Как вернуть значение из события или из функции обратного вызова?"

Deliaz
  • 977
  • 6
  • 17
  • Спасибо,но уже и сам понял что не правильно работаю с api – rodigy Dec 28 '17 at 16:17