通过扩展API访问Chromium浏览器中的历史记录

问题描述 投票:0回答:1

我目前正在开发一个扩展,它将为标准 Edge 历史页面提供更好的替代方案。为了访问历史记录,我使用了

chrome.history
,正如我之前所想的那样,它解决了我的问题。然而,当我增加查询的
maxResults
属性时,在某些时候它停止返回更多结果(大约 100,我肯定有超过 100 个历史项目),从中我得出结论,它只返回添加的项目上次启动浏览器后。我通过重新启动浏览器来确认这一点,并看到一个空结果。目前,我正在使用这段代码来获取历史记录项目:

function displayHistory(items, filter, main) {
    items.processingDone = false;
    chrome.history.search(
        {
            text: filter,
            maxResults: 1000
        },
        (history) => {
            undisplayAll(items, main);
            for (const i of history) {
                displayItem(items, i, main);
            }
            items.processingDone = true;
        }
    );
}

问题是:如何访问整个历史记录?

javascript google-chrome microsoft-edge chromium browser-extension
1个回答
0
投票

您可以尝试承诺 API 调用:

function fetchHistoryPage(startTime, endTime, pageSize) {
  return new Promise((resolve, reject) => {
    chrome.history.search({
      text: '',
      startTime: startTime,
      endTime: endTime,
      maxResults: pageSize
    }, function(results) {
      if (chrome.runtime.lastError) {
        reject(chrome.runtime.lastError);
      } else {
        resolve(results);
      }
    });
  });
}

然后实现寻呼调用:

const MILLIS_PER_DAY = 1_000 * 60 * 60 * 24;

let pageSize = 100; // items per page
let currentPage = 0;

async function getNextPage() {
  let now = Date.now();
  let startTime = now - (currentPage + 1) * MILLIS_PER_DAY; // 1 day earlier
  let endTime = now - currentPage * MILLIS_PER_DAY;

  try {
    let results = await fetchHistoryPage(startTime, endTime, pageSize);
    if (results.length > 0) {
      return results;
      currentPage++;
    } else {
      console.log('No more history items.');
    }
  } catch (error) {
    console.error('Error fetching history:', error);
  }
  return null;
}

// Example usage:
(async () => {


  await getNextPage(); // Fetch page #1
  await getNextPage(); // Fetch page #2
})();
© www.soinside.com 2019 - 2024. All rights reserved.