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

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

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

这个"新版"是由于火狐浏览器旧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(遍历带关键词历史记录);
} };

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

最新文章

  1. WePayUI 快快尝鲜体验
  2. Java注解入门
  3. hibernate4连接mysql自动创建表之错误
  4. 关于ecshop的那些故事
  5. IT公司100题-11-求二叉树中节点的最大距离
  6. 2014多校第六场 1010 || HDU 4930 Fighting the Landlords (模拟)
  7. iOS 日历类(NSCalendar)
  8. android 自定义标题栏 titleBar自定义
  9. Jquery插件之信息弹出框showInfoDialog(成功、错误、警告、通知)
  10. [Android] 输入系统(二)
  11. 第二天(CSS 选择器)
  12. 仿Google首页搜索自动补全
  13. 【我的漫漫跨考路】有生之年·调完了BUG--冒泡排序C++版本
  14. Increasing Speed Limits
  15. [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)
  16. Swift中如何转换不同类型的Mutable指针
  17. css实现背景模糊,但不影响背景上的内容
  18. XV Open Cup named after E.V. Pankratiev. GP of America
  19. 【转】C++拷贝构造函数详解
  20. 11g R2 RAC 虚拟机

热门文章

  1. WPF简单的分页控件实现
  2. Learning WCF:A Simple Demo
  3. WHU1124 Football Match
  4. Javascript百学不厌 - 模块模式
  5. oracle对sum出来的数字进行非空补0处理
  6. linux下应用程序性能剖分神器gprofiler-tools-安装和使用
  7. Hive的union和join操作
  8. servlet 请求乱码解决
  9. 移动端 h5开发相关内容总结(三)
  10. postgresql 表继承