【问题标题】:Chrome tabs.onActivated.addListener throws an "undefined" TypeErrorChrome tabs.onActivated.addListener 抛出“未定义”类型错误
【发布时间】:2012-04-14 19:14:44
【问题描述】:

我正在做一个 chrome 扩展,在文档 this statement 中有关于 chrome.tabs.onActivated 的内容。

每当我尝试放置 chrome.tabs.onActivated.addListener 时,它都会显示 Uncaught TypeError: Cannot call method 'addListener' of undefined

整个背景.html:

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

【问题讨论】:

    标签: google-chrome-extension typeerror


    【解决方案1】:

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

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

    ma​​nifest.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;
        });
    });
    

    【讨论】:

    • 一切都好,我有权限...真正困扰我的是那个“未定义”的东西..文档错了吗?
    • 调试时,您看到上下文正确吗?在检查器中添加断点并刷新后台页面以读取变量。您运行的是哪个 Chrome 版本?
    • 文档是对的,我刚刚运行了上面的代码,它按预期工作。在 Chrome 18.0.1025.142
    • 我想我明白了为什么它不能正常工作......我有 Chrome 17。我想它很新。感谢您的帮助,我会在更新后尝试。
    • 您使用的是旧浏览器 :x 并且极易受到攻击,是的,请更新到版本 18。
    【解决方案2】:

    文档不完整。从 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 的键来获得此函数名称。

    【讨论】:

    • 附言。这是我使用的命令:Object.keys(chrome.tabs).filter(function(name){return name.slice(0,2)=='on'});,在 Chrome 17 中返回:["onCreated", "onUpdated", "onMoved", "onSelectionChanged", "onActiveChanged", "onHighlightChanged", "onDetached", "onAttached", "onRemoved"]
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2020-02-11
    • 1970-01-01
    • 2014-05-30
    • 2014-07-09
    • 2018-11-15
    • 2020-02-03
    相关资源
    最近更新 更多