browser.tabs не определено в расширении Microsoft Edge

Я пишу расширение Microsoft Edge.

У меня есть следующий файл манифеста:

{
  "author": "",
  "description": "Test",
  "name": "Test",
  "version": "1.0",
    "permissions": [        
        "tabs",
        "<all_urls>"
    ],
  "content_scripts": [{
    "js": ["script.js"],
    "matches": ["*://*/*"]
  }],
  "icons": {
    "48": "icons/icon-40x40.png"
  }
}

Когда я вставляю в свой script.js:

var currentTab = browser.tabs.getCurrent();
alert(currentTab.index);

Это не удается, потому что browser.tabs не определен?

Почему?

введите здесь описание изображения


person Jimmyt1988    schedule 08.05.2017    source источник
comment
вы пытаетесь портировать расширение Chrome? если да, см. docs.microsoft.com/ en-us/microsoft-edge/extensions/guides/ и microsoft.com/el-GR/store/p/microsoft-edge-extension-toolkit/   -  person George Birbilis    schedule 09.05.2017
comment
Нет, просто пишу новый плагин Microsoft Edge.   -  person Jimmyt1988    schedule 09.05.2017
comment
объект браузера определен нормально? если это так, то если вкладки нет, это может быть проблема с разрешениями   -  person George Birbilis    schedule 10.05.2017
comment
@GeorgeBirbilis - Да, браузеры есть, вкладок нет   -  person Jimmyt1988    schedule 10.05.2017
comment
так есть ли шанс, что манифест имеет неправильный синтаксис, неправильную кодировку или неправильно упакован, чтобы Edge мог его найти?   -  person George Birbilis    schedule 10.05.2017
comment
Я столкнулся с той же проблемой. Я перемещаю скрипт из содержимого в background.html, а browser.tabs получает его значение. Надеюсь, поможет.   -  person Lingsen Xie    schedule 17.04.2018
comment
У меня точно такая же проблема. В background.js определено значение browser.tabs, но вы не можете использовать browser.tabs.getCurrent() в фоновом режиме. В содержимом browser.tabs не определено. Работает в Chrome и Firefox   -  person Ivo Skalický    schedule 20.04.2018


Ответы (2)


Это невозможно из сценария контента, поскольку он имеет ограничения.

API-интерфейс browser.tabs может использоваться/доступен только в фоновом сценарии и сценариях всплывающих окон действий браузера. Для достижения намеченной функциональности вы можете отправить сообщение в фоновый скрипт, а в фоновом скрипте вы можете использовать API browser.tabs.

person WarPro    schedule 13.06.2018

Вы можете вызвать эту функцию browser.tabs.getCurrent() в контекстах, где есть вкладка браузера, например страница параметров. Если вы вызовете ее из фонового скрипта или всплывающего окна, она вернет неопределенное значение. Но, как я вижу, вы использовали эту функцию в контентном скрипте, так что это не должно быть проблемой.

Это асинхронная функция, которая возвращает обещание.

Вы можете проверить этот сайт для получения дополнительной информации. о том, как использовать функцию для Edge Extension.

Также не стоит оставлять поле автора пустым, это может привести к ошибке. Так что попробуйте написать свое имя в нем.

person Tarun Talreja    schedule 08.06.2017
comment
Но он совместим с Edge, поэтому он должен работать, и я сам его использовал. - person Tarun Talreja; 27.06.2017
comment
Я добавил пикси в свой ОП, интересно, что я сломал :) - person Jimmyt1988; 28.06.2017