# HTMLArea 拼字檢查器

本 HTMLArea 拼字檢查器子系統包含了下列檔案:

- spell-checker.js — 給 HTMLArea 用的拼字檢查器外掛介面
- spell-checker-ui.html — 用於使用者介面的 HTML 碼
- spell-checker-ui.js — 實際讓使用介面能動的元件
- spell-checker-logic.cgi — 這個 Perl CGI 腳本是用來檢查由 POST 所取得的文字是否有拼字錯誤用的
- spell-checker-style.css — 用於拼錯的字的樣式
- lang/en.js — 主要的語系檔 (英文).

## 程序概觀

當使用者在 HTMLArea 編輯器裡按下了 "拼字檢查" 按鈕時, 就會開出一個網址為 "spell-check-ui.html" 的新視窗. 這個視窗一開始就會載入它在編輯器裡所能找到的文字 (用 `window.opener.SpellChecker.editor` 這個全域變數) 然後把這些文字遞送到伺服器端的腳本程式 "spell-check-logic.cgi". 這個表單的目標會是個行內頁框, 同時用於顯示文字及校對.

接著, spell-check-logic.cgi 會叫用 Aspell 來處理所給 HTML 裡所能找到的每一個純文字的部分. 它會重建出一份 HTML 檔案, 明確標示著哪些字錯了, 以及每個錯字的建議拼法. 這個檔案接下來就會被載入到行內頁框中. 載入之時, 也會叫用一個來自 "spell-check-ui.js" 的 JavaScript 函式. 這個函式會從 iframe 裡的 HTML 中取出所有拼錯了的字, 然後做出用於更正的使用者介面.

## 伺服器端的腳本程式 (spell-check-logic.cgi)

萬國碼安全性 — 這個程式對於萬國碼是安全的. HTML 實體會被展開成相對應的萬國碼字符. 這些字符會被當成是單詞的一部份而送進 Aspell 裡. 所有被送進 Aspell 的文字都會是萬國碼 (有可能的話). 然而, Aspell 看起來還沒有支援萬國碼 (跟 Aspell 及萬國碼有關的討論串). 這表示帶有萬國碼超出 0..255 字符的單詞, 很有可能會被 Aspell 認為是 "拼錯了".

我今天花了好幾個小時在網路上辛勤地挖掘著, 仍舊沒有看到任何開放源碼的拼字檢查器能夠支援萬國碼. 因此我們仍然繼續使用 Aspell, 因為看來它所使用的引擎是最被推建的. 萬國碼的支援有朝一日定會實做於 Aspell. 請寫信給 Kevin Atkinson (Aspell 的作者跟維護者) 以促成此事 ;-)

在 Perl Unicode 手冊 (man perluniintro) 裡陳述著:

> 從 Perl 5.6.0 起, Perl 就具備了處理萬國碼的原生能力. 然而 Perl 5.8.0 纔是第一個建議用來嚴謹處理萬國碼任務的釋出版本. 5.6.1 這個用於維護的釋出版本, 修正了許多一開始實做萬國碼時所發生的問題, 但是正規表示式裡的萬國碼仍舊無法在 5.6.1 版裡正常使用.

另一方面, 千萬不要認為腳本程式在 5.8.0 版後的 Perl 解譯器裡, 就絕對可以正常處理萬國碼.

妳需要下列這些 Perl 模組:

- Text::Aspell
- HTML::Parser
- HTML::Entities
- CGI

這些當中, 祇有 Text::Aspell 纔可能需要手動安裝. 其他模組在多數的 Perl 發行套件中, 幾乎都是預設就有的了.

最後更新日期: Sun Aug 10 12:28:24 2003