History in Threads: 火狐插件实现浏览历史按主题显示(树)

简介: 用JavaScript实现的火狐插件, 代码中使用中文命名. 实现浏览历史按主题以树的形式显示. Firefox addon implemented in JavaScript, with Chinese naming, to show browsing history in threads.

History in Threads似乎是唯一一个业余项目里有确认用户的. 大部分JavaScript源码(300+行)也用了中文命名.

插件功能很简单, 就是根据网页点击顺序生成树, 每个树可以认为是主题相关的. 比如, 从一个B搜索页A点开了其中一个页面B, 显示搜索结果时B就是A的子节点(如下图的"proglog nlp - 国内版 Bing"). 火狐浏览器对页面点击顺序的保存维护好像比Chrome好一些. 生成的树比较完整(相比Chrome版).

最新版的界面很简陋(图源自源码库program-in-chinese/HistoryInThreads_WebExtension):
2018_01_15_hit_

这个"新版"是由于火狐浏览器旧API失效被逼出来的(port to WebExtensions · Issue #6 · nobodxbodon/HistoryInThreads). 顺便在主要算法部分改用了中文命名:

  • 访问缓冲表.js: 主要数据结构
  • utils.js: 所有不依赖于浏览器API的方法, 包括树的生成, 搜索时间处理, 根据关键词高亮历史记录等等
  • history.js: 根据关键词获取所有可能相关的浏览历史. 由于新版火狐API除去了根据多个URL获取历史记录的功能(优化运行速度 · Issue #1 · program-in-chinese/HistoryInThreads_WebExtension), 只好搜索两次, 一次按照(搜索关键词+历史时间)搜索, 一次只按照历史时间搜索(多搜了很多, 只好用上面的缓冲表避免每次搜索时都搜几万项历史记录). 相关的部分代码如下:
var 按关键词搜索历史 = function(关键词, 历史时间范围) {
    计时("调用前")
    带关键词访问记录 = [];
    未处理url数 = 0;

    if (关键词 != null) {
      当前关键词 = 关键词;
    }

    if (当前时间范围 == null || !不需重新索引(历史时间范围, 当前时间范围)) {
      无关键词访问记录 = [];
      访问细节表 = {};

      var 新回溯时间 = 取历史回溯时间(历史时间范围);
      历史回溯时间 = 新回溯时间;
      当前时间范围 = 历史时间范围;

      // TODO: 如果先按关键词搜索, 如果没有匹配, 可以省去搜索所有历史
      // 首先搜索所有浏览历史
      var 无关键词搜索选项 = 生成搜索选项('', 历史回溯时间);
    
      var 无关键词搜索 = browser.history.search(无关键词搜索选项);
      无关键词搜索.then(遍历无关键词历史记录);
    } else {
      var 带关键词搜索选项 = 生成搜索选项(当前关键词, 历史回溯时间);
      var 带关键词搜索 = browser.history.search(带关键词搜索选项);
      带关键词搜索.then(遍历带关键词历史记录);
    }

};

最近疏于插件开发. 如有兴趣参与, 欢迎联系.

2018-01-15

相关文章
|
4天前
|
移动开发 API UED
使用history.pushState管理浏览历史
使用history.pushState管理浏览历史
|
2月前
|
Web App开发
禁用Google Chrome自动更新,怎么找到Update目录?
本文介绍一下如何找到Update目录。
57 0
|
7月前
|
存储 JavaScript 小程序
刷新网页后先前浏览位置不变的解决方案
我重新加载网页,刷新之后,滚动条依然定位在我刚刚浏览的位置,这个小功能感觉还不错,挺方便的。 具体是怎么实现的呢,去网上大概查了一下。 这个是使用滚动条属性scrollTop来实现的。
53 0
|
8月前
【VsCode】1.70.0 新版本好用功能分享 :代码函数名称浏览时固定(功能原称 sticky Scroll)
在Code 1.70.0 以后,新增功能:sticky Scroll 。 效果描述: 在浏览长函数的时候,可以将函数的名称定义部分固定在顶栏,类似冻结窗口,方便查看函数功能,不必再跳转。
212 0
|
10月前
|
Web App开发
推荐一个 Chrome 浏览历史记录管理的扩展 - History Trends Unlimited
推荐一个 Chrome 浏览历史记录管理的扩展 - History Trends Unlimited
|
10月前
|
Web App开发 缓存 API
在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式
Service Worker 缓存 API 的一个主要优点是它为您提供了比内置浏览器缓存更详细的控制。 例如,Service Worker 可以在用户首次运行您的 Web 应用程序时缓存多个请求,包括他们尚未访问的资产。 这将加快后续请求。 还可以实现自己的缓存控制逻辑,确保被认为重要的资产保留在缓存中,同时删除较少使用的数据。
|
Web App开发
谷歌 Chrome 浏览器内直接打开编辑保存 Word、Excel、PPT 文档,可离线部署!
谷歌 Chrome 经过开发团队不断优化,凭借运行界面简单,打开速度最快及扩展插件众多,Chrome 已经成为了世界上最受欢迎的浏览器。不过有一点非常可惜,由于微软 Office 不是开源程序,所以 Chrome 一直无法直接打开微软 Office 文档。
290 0
谷歌 Chrome 浏览器内直接打开编辑保存 Word、Excel、PPT 文档,可离线部署!
|
Web App开发 SQL JSON
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
610 0
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
OFFICE技术讲座:WP/SS文字渲染不开启的条件
OFFICE技术讲座:WP/SS文字渲染不开启的条件
104 0
|
Web App开发 前端开发 JavaScript
使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
225 0
使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况