如何在Firefox中的Web扩展中获取当前选项卡的历史记录?

时间:2017-10-04 19:57:35

标签: firefox firefox-addon firefox-addon-sdk history firefox-webextensions

是否有API可以在Firefox中的Web扩展中获取当前标签的历史记录?就像点击并按住“返回”按钮一样,下拉列表将显示当前标签的历史记录。

1 个答案:

答案 0 :(得分:1)

没有。默认情况下,您无法请求某个选项卡的列表。

然而,您可以监听onUpdated,onCreated等选项卡事件。使用保持不变的tabId,您可以在后台脚本(background.js)中保留URL列表,如果插件是启用。

你会这样做:

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,它重置该id的选项卡历史记录(arr [tabId] = null),实现onUpdated(肯定需要,与handleCreated中的逻辑相同)。

链接: