【问题标题】:Retrieving or streaming all history with Firefox Web-Extension使用 Firefox Web-Extension 检索或流式传输所有历史记录
【发布时间】:2019-06-27 20:52:33
【问题描述】:

我正在尝试使用browser.history.search() 检索整个可用历史记录。 Mozilla 的 example provided 不起作用,因为默认的最大结果数为 100。

我想我可以通过将最后一批最早找到的日期作为下一次搜索的上限传递多次搜索的历史记录。

async function getHistory() {
  const query = { text: '', startTime: 0 }
  const results = [];
  let response;
  while ((response = await browser.history.search(query)).length > 0) {
    results.concat(response);
    query.endTime = response[response.length-1].lastVisitTime - 1;
  }
  return results;
}

这似乎不起作用,因为搜索返回的项目的 lastVisitTime 大于传递给查询对象的 endTime,这不是我从文档中得到的。

我发现的另一种方法是将最大可能值传递给maxResults,即253-1 252。我不想这样做,因为我想以更易于管理的块流式传输数据。

第一种方法我做错了什么?如何将相邻的历史条目块流式传输到最后?

【问题讨论】:

    标签: javascript firefox history firefox-addon-webextensions


    【解决方案1】:

    对于遇到此问题的任何人,问题出在 MDN 文档上。它最初为endTime 声明“如果提供,此选项将排除lastVisitTime 晚于此时间的结果”。在实践中,endTime申请任何访问,并在提交this bug report后,文档被更正。

    似乎没有办法从网络扩展 API 迭代地获取时间相邻的 VisitItems 块。您可以通过使用最旧结果的 lastVisitTime 作为下一个块的 startTime 来解决此问题,并丢弃任何过去的访问。

    这意味着一些开销,但我怀疑这将在当前的浏览器一代中得到解决,因为作为主流浏览器的 Chrome 已经有一个很好的历史查看器,而 Firefox 历史插件的需求并不高。

    This bug 也很好地描述了问题,以及为什么开发人员选择以这种方式实现历史搜索。

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2023-04-05
      相关资源
      最近更新 更多