2012-03-31 7 views
3

クロム拡張機能を使用していますが、this statementについてはchrome.tabs.onActivatedです。Chrome tabs.onActivated.addListenerが「未定義」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.onActiveChangedchrome.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。これは私が使用したコマンドです: 'Object.keys(chrome.tabs).filter(function(name){return name.slice(0,2)== 'on'});'、戻り値: '[" onCreated 「onUpdated」、「onMoved」、「onSelectionChanged」、「onActiveChanged」、「onHighlightChanged」、「onDetached」、「onAttached」、「onRemoved」]「Chrome」17. –

+0

これは完璧に動作します。 – azenet

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

+0

これをデバッグすると、コンテキストが正しく表示されますか?インスペクタにブレークポイントを追加し、背景ページを更新して変数を読み込みます。あなたはどのChromeバージョンを使用していますか? –

+0

Docが正しいです、私はちょうど上記のコードを実行し、期待どおりに動作します。 Chromeで18.0.1025.142 –

関連する問題