ChmFox - CHM 文件閱讀Firefox插件

fmms 13年前發布 | 22K 次閱讀 Firefox

ChmFox 是一款 Firefox 擴展。它可以將 Firefox 變成閱讀 CHM 文件的利器。如果和 Firefox 上眾多提升閱讀體驗的擴展配合使用,你就擁有了最好的 CHM 閱讀軟件,沒有之一。更棒的是,它和 Firefox 一樣是跨平臺的,你會在 Windows,Linux,Mac 等眾多平臺上獲得統一的 CHM 閱讀體驗。
ChmFox - CHM 文件閱讀Firefox插件

</div>

1 安裝

ChmFox 從 1.1 版開始就通過了 Mozilla 的官方認證,現在你可以直接在 Firefox 的菜單 附加組件->獲取附加組件 中搜索并安裝它。當然,你也可以去 ChmFox 在 Mozilla 官網上的主頁 去下載安裝。安裝完后需要重啟 Firefox 才能生效。安裝過程中會提醒給作者捐款以支持開發,如果很有愛的話可以盡些心意。當然,不捐款是完全不影響使用的。
目前 ChmFox 1.1 支持以下操作系統:

  • Windows
  • Linux x86_64
  • Linux i686
  • Mac i386

如果 ChmFox 暫時不支持你的操作系統,你又比較 geek 的話,請看后面的編譯章節自行編譯。

</div>

2 使用

在重啟完 Firefox 后,就可以開始使用 ChmFox 了。它的使用很直覺。你可以使用下面眾多方式打開 CHM 文件:

  • 使用菜單中的 打開文件 選擇要打開的 CHM 文件
  • 用鼠標將 CHM 文件拖入 Firefox 窗口中
  • 使用命令行直接打開,例如: firefox.exe c:\hello.chm

最后一種方式也是操作系統所熟知的打開方式。這意謂著,你可以直接將 CHM 文件類型關聯到 Firefox 上。以后直接雙擊 CHM 文件,操作系統就會用 Firefox 去打開它。

一般 CHM 文件都會有目錄,有些還會有索引。ChmFox 提供了專門的側欄來顯示它們。你可以通過菜單 查看 -> 側欄 -> ChmFox 來打開和關閉。方便起見,ChmFox 同時提供了打開側欄的快捷鍵 Ctrl+M。側欄的使用也很直觀,直接點擊側欄上的某個條目就可以轉到相關頁面。

在閱讀時,你也可以將頁面直接加入收藏夾。下次可以直接通過收藏夾中收藏的鏈接打開相應的文件的頁面。
ChmFox 對 CHM 使用了自定義的 URI schema, 形如:

chm:///c:/path/to/file.chm!/page_url.html

在命令行中,也可以使用 Firefox 直接打開這種 CHM 的 URI:

firefox.exe chm:///c:/hello.chm!/home.html

如果覺得字的大小不合適,還可以使用 Firefox 自身提供的頁面縮放功能進行調整。

</div>

3 高級使用

ChmFox 可以和眾多優秀的 Firefox 擴展配合使用,大大提升 CHM 閱讀體驗。例如:

  • 使用 Firefox 的 NoSquint 擴展,自動調整頁面和文字大小
  • 使用 Delicious Extension 將閱讀頁面收藏到 Delicious 上,這樣就可以在不同機器間同步閱讀進度。不過,這要求不同機器上的 CHM 文件路徑要相同。
  • 使用 ScrapBook 對關鍵頁面加入評注并收藏,做成讀書筆記

這個列表還能繼續下去。大家都有自己最愛的 Firefox 擴展,在使用 ChmFox 時你完全可以發揮想象力,通過組合不同的優秀擴展,提升自己的閱讀體驗。
這也正是 Firefox 的魅力所在。

</div>

4 編譯方法

雖然 ChmFox 已經支持了很多平臺,但因為資源和精力有限,還是有漏網之魚(例如問的比較多的 Mac x86_64 平臺)。好在,ChmFox 是使用跨平臺的 C/C++ 和 Javascript 開發的開源項目。如果有興趣,你可以自行編譯對特殊平臺的支持,下面是簡略的編譯方式:

如果順利,在 ChmFox 源代碼根目錄會新生成一個 xpi 文件,將它拖到 Firefox 中就可以安裝了。
同時,歡迎將編譯的結果寄給作者,作者會將你的勞動加入到下一個發行包中,讓更多的人受益。

</div>

5 內幕

上面大致講了 ChmFox 的使用,如果你對 ChmFox 本身有興趣的話,下面是關于它的一些“內幕”。

ChmFox 是本博的作品。內舉不避親,我也希望 ChmFox 能夠幫到大家。“每一個好軟件的起因都是撓到了開發者本人的癢處”,ChmFox 也不例外。幾年前有一款 Firefox 擴展叫 CHM Reader,它正是 ChmFox 的前身。當時看到它確實眼前一亮,通過它,Firefox 就可以用來閱讀 CHM,很多好的閱讀體驗也能用在 CHM 上了。而且它支持 Linux, 從此就再不用在 Linux 的眾多雖勘用但都略有缺陷的 CHM 閱讀軟件中做選擇了。連 Windows 上的 CHM 默認閱讀器都可以退休了。這款擴展當時只有一個令我不爽的地方:它需要用自己單獨的菜單欄打開 CHM 文件,不能直接命令行打開 CHM 文件。這樣就不能進行文件關聯。你需要通過變通的方式才能設置成雙擊 CHM 文件 Firefox 自動打開。但不管如何,這只是個小缺陷,還沒有讓我心癢難耐。直到 Firefox 4 發布后,似乎原作者沒有要繼續開發新版支持 Firefox 4 的意思,這才下決心自己挽起袖子做一款新的插件。首要的目標就是支持 Firefox 4,同時,也改進原版不能直接打開 CHM 文件的缺陷。

開發從今年5.1假期開始,到 ChmFox 1.1 版本被 Mozilla 審核通過,斷斷續續持續了兩個月時間。其中真正開發的時間算下來只有3個周末。開發比我想象的要困難些。由于從沒接觸過 Firefox 的擴展開發,一開始花了一周的時間用來學習 CHM Reader 和其它一些擴展的代碼。下面是一些流水賬:

  • Firefox 4 是個大版本升級,Gecko SDK 2.0 包含了很多不兼容的接口升級,原來的 CHM Reader 的接口代碼都要改變。這里是參考資料
  • 增加一個自定義的 uriContentListener,通過它把 CHM 文件的 URI 轉成 上面自定義的 CHM URI,從而使 Firefox 能直接打開 CHM 文件
  • 修正了一些 CHM Reader 上原有的 Bug
  • 制作程序圖標,準備提交 Mozilla 審閱的資料
  • 進一步修改程序,以符合 Mozilla 審核的標準
  • 增加對 Firefox 5 的支持

在開發中最大的問題是 ChmFox 中使用的 binary component。它需要在每個平臺上編譯出各自的版本。Mozilla 又規定,Firefox 每次大版本升級,binary component 必須與最新的 Gecko SDK 一起程序編譯。按現在 Firefox 一個多月出一個大版本的速度,程序編譯的工作量無形增加了很多。以后 ChmFox 可能會把 binary component 干掉,用 ctypes.jsm 直接操作普通的動態庫減輕升級的工作量。

</div>

6 未來

雖然 ChmFox 功能簡單,可細想想還是有很多可以改進的空間,下面是作者對它的一些計劃:

  • 持續加入對 Firefox 新版本的支持(這個要吐槽一下 Firefox 瘋了似的大版本升級)
  • 增加對新平臺的支持,例如 Mac x86_64
  • 增加 i18n / L10n 的支持,更加專業一些
  • 可以自定義開關側欄的快捷鍵,避免與其它擴展沖突
  • 全文搜索
  • 使用 ctypes.jsm + dynamic library 取代 binary component

歡迎大家在使用 ChmFox 時給它多提意見。一起幫它變的更好

轉自:http://zhuoqiang.me/a/chmfox

</div>

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!