Chrome tabs.onActivation.addListener генерирует «неопределенную» ошибку типа - PullRequest
3 голосов
/ 31 марта 2012

Я делаю расширение Chrome, и в документе есть это утверждение о chrome.tabs.onActivated.

Всякий раз, когда я пытаюсь разместить chrome.tabs.onActivated.addListener, он говорит Uncaught TypeError: Cannot call method 'addListener' of undefined.

Весь background.html:

<script>
chrome.tabs.onActivated.addListener(function(info) {
    var tab = chrome.tabs.get(info.tabId, function(tab) {
        localStorage["current_url"] = tab.url;
    });
});
</script>

Ответы [ 2 ]

5 голосов
/ 31 марта 2012

Документация неполная . Начиная с Chrome 18, chrome.tabs.onActiveChanged заменяется на chrome.tabs.onActivated. В Chrome 17 событие onActivated не существовало .

chrome.tabs.onActivated.addListener( function(info) {
    var tabId    = info.tabId,
        windowId = info.windowId;
});
chrome.tabs.onActiveChanged.addListener( function(tabId, info) {
    tabId        = tabId;         // For comparison
    var windowId = info.windowId;
});

Я получил это имя функции, открыв консоль в контексте расширения и проверив ключи chrome.tabs.

1 голос
/ 31 марта 2012

Нет ничего плохого в вашем коде, он должен работать просто отлично.

Просто убедитесь, что у вашего манифеста есть разрешение вкладок:

manifest.json

{
  "name": "My extension",
  "version": "1",
  "manifest_version": 2,
  "background": {
    "scripts": ["background.js"]
   },
  "permissions": [
    "tabs"
  ]
}

background.js

chrome.tabs.onActivated.addListener(function(info) {
    var tab = chrome.tabs.get(info.tabId, function(tab) {
        localStorage["current_url"] = tab.url;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...