2012-03-31 217 views
3

我正在做一個Chrome擴展,關於chrome.tabs.onActivated的文檔this statement有。Chrome tabs.onActivated.addListener會拋出一個「undefined」TypeError

每當我嘗試放置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> 

回答

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

PS。這是我使用的命令:'',',返回值:'[「onCreated()); 「,」onUpdated「,」onMoved「,」onSelectionChanged「,」onActiveChanged「,」onHighlightChanged「,」onDetached「,」onAttached「,」onRemoved「]' – 2012-03-31 08:54:00

+0

這很好用,非常感謝! – azenet 2012-03-31 08:55:02

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; 
    }); 
}); 
+0

一切都好,我有權限......實際上打擾我的是「未定義」的東西..文件是否錯誤? – azenet 2012-03-31 08:31:52

+0

當你調試它時,你看到上下文正確嗎?在檢查器中添加斷點並刷新後臺頁面以讀取變量。你運行什麼Chrome版本? – 2012-03-31 08:35:23

+0

該文件是正確的,我只是運行上面的代碼,並按預期工作。在Chrome 18.0.1025.142 – 2012-03-31 08:36:19

相關問題