24

該代碼旨在將用戶正在查看的頁面的當前標籤對象輸出到控制檯,但它僅輸出未定義的內容。它從瀏覽器操作頁面中運行。如何使用chrome.tabs.getCurrent獲取Chrome擴展中的頁面對象?

chrome.tabs.getCurrent(function(tab){ 
    console.log(tab); 
}); 

我已經看過了documentation而據我可以告訴代碼似乎符合它說什麼。

+1

瀏覽器操作彈出頁面不是任何選項卡的一部分,所以'tabs.getCurrent()'不起作用。相反,serg用'tabs.getSelected()'的答案應該可以做到。 –

回答

17

嘗試:

chrome.tabs.getSelected(null, function(tab){ 
    console.log(tab); 
}); 
+6

作品,謝謝!但爲什麼? : -/ –

+5

已棄用,請參閱下面的@konstantin的答案。 – lionello

+0

'getCurrent()'與幾乎不贊同被棄用的'getSelected()'或下面的答案相同,第一個方法從腳本運行的位置獲取選項卡,而第二個方法獲取當前選定(活動)選項卡 – novalain

81

,因爲谷歌瀏覽器16 getSelected()已棄用的方法(但官方文檔中的許多文章尚未更新)。 Official message is here。要獲取在指定窗口中選擇的選項卡,請使用chrome.tabs.query()和參數{'active': true}。所以現在它應該看起來像這樣:

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) { 
    console.log(tabs[0]); 
}); 
+0

這總是在回調中返回0長度數組( – SuperUberDuper

+0

)如果在一個桌面中,我打開了2個chrome窗口,每個窗口都顯示一個選項卡,在這種情況下,這有可能具有> 1個活動選項卡? – lsheng

相關問題