History in Threads: 火狐外掛實現瀏覽歷史按主題顯示(樹)
阿新 • • 發佈:2019-01-06
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(遍歷帶關鍵詞歷史記錄);
}
};
最近疏於外掛開發. 如有興趣參與, 歡迎聯絡.