1
是否有一個API可以在Firefox的Web擴展中獲取當前選項卡的歷史記錄?就像點擊並按住「後退」按鈕時,會出現一個下拉菜單,顯示當前標籤的歷史記錄。如何在Firefox的Web擴展中獲取當前選項卡的歷史記錄?
是否有一個API可以在Firefox的Web擴展中獲取當前選項卡的歷史記錄?就像點擊並按住「後退」按鈕時,會出現一個下拉菜單,顯示當前標籤的歷史記錄。如何在Firefox的Web擴展中獲取當前選項卡的歷史記錄?
不可以。默認情況下,您無法要求某個標籤的列表。
但是,您可以監聽onUpdate,onCreated等選項卡事件。使用保持不變的tabId,您可以將URL列表保留在後臺腳本(background.js)中,該腳本始終在運行已啓用。
你會做這樣的:
let arr=[]; // At the top of background.js
browser.tabs.onCreated.addListener(handleCreated); // Somewhere in background.js
function handleCreated(tab) {
let tabId = tab.id;
if(arr[tabId]==null) arr[tabId] = [];
arr[tabId].push(url);
}
function getHistoryForCurrentTab(){
function currentTabs(tabs) {
// browser.tabs.query returns an array, lets assume the first one (it's safe to assume)
let tab = tabs[0];
// tab.url requires the `tabs` permission (manifest.json)
// We will now log the tab history to the console.
for(let url of arr[tab.id]){
console.log(url);
}
}
function onError(error) {
console.log(`This should not happen: ${error}`);
}
browser.tabs.query({currentWindow: true, active: true}).then(currentTabs, onError);
}
上面的代碼是一個概念證明。您需要考慮的一些改進:實現onClosed,它重置該標籤的歷史記錄(arr [tabId] = null),實現onUpdated(肯定需要,與handleCreated中的邏輯相同)。
鏈接:
所以因此能夠保留歷史,對每個* *單獨標籤?因此,當需要時,還可以在當前選項卡上調用歷史記錄? – Gary
請參閱我添加到答案的代碼。 – Smile4ever
好的,謝謝。在我們之前,'FillHistoryMenu'可用,所以很遺憾他們刪除了這個。 – Gary