【问题标题】:How to get the current tab's history in a Web Extension in Firefox?如何在 Firefox 的 Web 扩展中获取当前选项卡的历史记录?
【发布时间】:2017-10-04 19:57:34
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 中的逻辑相同)。

    链接:

    【讨论】:

    • 因此可以分别为 each 标签保留历史记录吗?因此还能够在请求时调用当前选项卡的历史记录?
    • 好的,谢谢。在 WE 之前,FillHistoryMenu 可用,所以很遗憾他们删除了它。
    • 确实如此。随着 WebExtensions API 的发展,新功能将被添加。
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多