2011-03-10 72 views
1

我正在做firefox插件,它有sqlite數據庫mydb.sqlite。這是我選擇的鏈接的數據庫,我有一個加載事件gBrowser。 現在我想編寫一個代碼,在每個加載事件中檢查content.document.location,並且會通知我當前打開的鏈接是否在數據庫中,或者它是否不在數據庫中(例如狀態欄上有一些圖標)。firefox addon檢查sqlite數據庫事件

你知道如何有效地做到這一點嗎?所以它不會減慢Firefox的速度?

謝謝

回答

1
  1. 確保您正在收聽的DOMContentLoaded事件,觸發在每個頁面加載

  2. 您可以使用e.target.defaultView.location.hrefDOMContentLoaded處理程序中獲取所加載的網頁的URL(其中e應該是您在回調中指定的第一個參數)。

  3. 現在比較此網址與數據庫中的內容。考慮使用asynchronous statement execution(Firefox 3.5及更新版本),以免不必要地阻塞主線程。

  4. This excellent tutorial會告訴你如何更新狀態欄。

+0

感謝您提供有用的信息,並且您如何在第3步中進行比較? Sequantialy比較每個記錄中的鏈接與加載的href?如果我有一段時間有10000個鏈接怎麼辦?它仍然是有效的或有更多的效率有一些竅門? – xralf 2011-03-10 20:46:26

+0

@xralf - 讓數據庫爲你工作。查詢表格,詢問任何與您當前所在頁面的URL匹配的記錄。如果查詢返回任何結果,那麼你找到了一個匹配。確保在URL列上放置一個'UNIQUE'約束來限制表的大小(並創建一個合適的索引)。我認爲你應該沒問題。 – 2011-03-11 18:38:47

+0

非常感謝... – xralf 2011-03-11 20:04:23