chrome.history.search返回不符合时间范围的异常条目问题咨询
问题原因与解决办法
Chrome的chrome.history.search接口设计逻辑是:只要某条历史记录在你指定的startTime和endTime范围内至少有一次访问记录,就会被返回。而返回条目中的lastVisitTime是该条目的最后一次访问时间,这个时间可能超出你设定的endTime范围——这是接口的正常行为,并非bug。
解决步骤
你需要在接口返回结果后,手动添加一层过滤逻辑,只保留lastVisitTime落在[startTime, endTime]区间内的条目:
let p = { startTime, endTime, maxResults: 1e6, text: '' }; let urls = await chrome.history.search(p); // 手动过滤符合时间范围的条目 let filteredUrls = urls.filter(item => { return item.lastVisitTime >= startTime && item.lastVisitTime <= endTime; });
补充说明
- 注意
startTime、endTime和lastVisitTime的单位都是毫秒时间戳,要保证三者单位一致,避免因单位不匹配导致过滤逻辑失效。 - 即便
maxResults设置较大(比如1e6),过滤操作的性能损耗也几乎可以忽略,不会影响实际使用体验。
内容的提问来源于stack exchange,提问作者SE12938683
相关产品推荐
相关产品推荐

