代码之家  ›  专栏  ›  技术社区  ›  Gary

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

  •  2
  • Gary  · 技术社区  · 7 年前

    是否有一个API可以在Firefox的Web扩展中获取当前选项卡的历史记录?就像单击并按住后退按钮一样,会出现一个下拉列表来显示当前选项卡的历史记录。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Smile4ever    7 年前

    不可以。默认情况下,您不能为某个选项卡请求列表。

    但是,您可以监听未更新、已创建等选项卡事件。使用保持不变的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);
    }
    

    以上代码是概念证明。您需要考虑的一些改进:implement onClosed重置该id的选项卡历史(arr[tabId]=null),implement onUpdated(当然需要与handleCreated中的逻辑相同)。

    链接: