Получение или потоковая передача всей истории с помощью веб-расширения Firefox - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь получить всю доступную историю, используя browser.history.search().Пример , предоставленный Mozilla , не работает, так как максимальное количество результатов по умолчанию - 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, которое равно 2 53 -1 2 52.Я бы предпочел не делать этого, так как я хочу передавать данные более управляемыми порциями.

Что я делаю не так с первым методом?Как я могу транслировать блоки смежных записей истории до конца?

1 Ответ

0 голосов
/ 20 февраля 2019

Для всех, кто сталкивался с этим, проблема была с документацией MDN.Первоначально для endTime было указано, что «если он указан, эта опция исключает результаты, чье lastVisitTime позже этого времени».На практике endTime применяется к любому посещению, и после подачи этого отчета об ошибке документация была исправлена.

Похоже, что нет путиитеративно получать временные блоки VisitItem s из API веб-расширений.Вы можете обойти эту проблему, используя lastVisitTime самого старого результата в качестве startTime для следующего фрагмента, и отбрасывать все посещения, прошедшие после этого.

Это означает небольшие накладные расходы, но я сомневаюсь, что это когда-либо будетрешена в текущем поколении браузеров, потому что Chrome, как доминирующий браузер, уже имеет хороший просмотрщик истории, а надстройки истории Firefox не пользуются повышенным спросом.

Эта ошибка также имеетхорошее описание проблемы и почему разработчики решили реализовать поиск по истории таким образом.

...