Chrome tabs.onActivated.addListener会抛出“未定义的”TypeError

时间:2012-03-31 08:09:20

标签: google-chrome-extension typeerror

我正在进行Chrome扩展程序,文档this statement中有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 个答案:

答案 0 :(得分:5)

文档不完整。自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 :(得分:1)

您的代码没有问题,它应该可以正常工作。

只需确保您的清单具有标签权限:

<强>的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;
    });
});