Нет результата от chrome.tabs.query в Opera

Я разработал расширение Chrome, оно отлично работает в Chrome 39, но выдает ошибку в Opera Developer 24 на Ubuntu 14.04 (64-разрядная версия).

Ошибка в ответ на tabs.query: TypeError: не удается прочитать идентификатор свойства undefined в HTMLLIElement.click

Поэтому я протестировал chrome.tabs.query на обеих консолях браузера:

chrome.tabs.query(
  { active: true, highlighted: true, currentWindow: true }, 
  function(thisTab) {
    console.log(thisTab);
  }
);

В Chrome он возвращает полный объект Tab.

Но в Опере он возвращает пустой массив [].

скриншоты

Почему это происходит?


person diEcho    schedule 04.12.2014    source источник
comment
также кто-нибудь может сказать мне, какое действие заставляет отображать undefined в консоли непосредственно перед результатом console.log в обоих браузерах?   -  person diEcho    schedule 04.12.2014
comment
первый undefined является возвращаемым значением chrome.tabs.query   -  person Xan    schedule 04.12.2014


Ответы (1)


Кажется, что Opera не включает концепцию выделенной вкладки, которая уже довольно непонятна в Chrome.

В любом случае ваш запрос избыточен: в Chrome активная вкладка не может быть не выделена.

Итак, для запроса, который работает в обоих случаях, используйте {active: true, currentWindow: true}.

person Xan    schedule 04.12.2014
comment
Еще раз спасибо за помощь. консоль должна предоставить правильные сведения об ошибке, а не неопознанную ошибку. Не так ли? - person diEcho; 04.12.2014
comment
Нет. Просто нет вкладок с highlighted: true, поэтому ваш фильтр возвращает пустой результат. Я предполагаю, что само свойство допустимо для обратной совместимости, поэтому явной ошибки нет. - person Xan; 04.12.2014
comment
Я обнаружил, что chrome.tabs.query({active: true, currentWindow: true} всегда возвращает массив нулевой длины в chrome, есть идеи? - person SuperUberDuper; 06.07.2017
comment
@SuperUberDuper Я предполагаю, что stackoverflow.com/a/29683574/934239 - person Xan; 06.07.2017