如何把 Speller Pages 集成到自己的网站?
更新时间
Speller Pages 是一个免费、开源的 Web 拼写检查前端,由 Web 用户界面和 JavaScript 库组成,后端调用服务端拼写检查程序 GNU Aspell,提供 PHP 和 Perl/CGI 两种版本。集成方式很直接:把服务端脚本、HTML 和 JavaScript 文件复制到你的 Web 服务器,再在包含待检查输入框的页面上加少量 JavaScript 代码,点击“检查拼写”按钮时调用检查函数即可。它适合 Web 邮件程序、留言板软件或基于 Web 的内容管理系统,也就是任何需要对一个或多个 HTML 文本输入框做拼写检查的场景。
集成前需要确认的前提
- 你的网站有可运行服务端脚本的环境,并能使用 PHP 或 Perl/CGI 版本中的一种。
- 服务器上具备 GNU Aspell,Speller Pages 依赖它提供拼写建议能力。
- 你能够修改目标页面的 HTML,并可以上传 JavaScript 文件到 Web 服务器。
- 待检查的内容位于 HTML 文本输入框(例如 textarea)中,而不是纯静态文本。
集成步骤
1. 获取文件
从 SourceForge 项目页下载当前最稳定的版本。页面说明 Speller Pages 托管在 SourceForge,完整细节以项目页为准;站内也提供开发版本的在线演示,可先试用再决定。
2. 复制文件到 Web 服务器
把服务端脚本、HTML 和 JavaScript 文件复制到你的 Web 服务器上。这些文件构成拼写检查的前端界面与后端调用链路,缺一不可。
3. 在目标页面引入 JavaScript
在包含待检查输入框的 HTML 页面中加入对 spellChecker.js 的引用,并定义触发检查的函数。官方演示页的写法是:先取得要检查的 textarea,再把它传给 spellChecker 构造函数,最后调用 openChecker() 启动检查。构造时可以传入任意数量的文本对象作为参数,也就是说一次可以检查多个输入框。
<script language="javascript" type="text/javascript" src="spellChecker.js"></script>
<script language="javascript" type="text/javascript">
function openSpellChecker() {
// 取得要检查的 textarea
var txt = document.myform.mytextarea;
// 把文本对象引用传给 spellChecker,可传入任意多个
var speller = new spellChecker( txt );
// 启动检查
speller.openChecker();
}
</script>
4. 绑定“检查拼写”按钮
把上面的 openSpellChecker() 绑定到页面上的“检查拼写”按钮。点击后,Speller Pages 会把输入框中的文字交给服务端拼写检查程序,并返回拼写建议供用户处理。
5. 验证
访问包含输入框的页面,输入一段含拼写错误的文字,点击“检查拼写”按钮,确认能弹出检查界面并给出建议。官方建议直接查看演示页的 HTML 源码,对照自己的写法,因为演示页的集成代码“基本上就是几行需要在点击按钮时执行的代码”。
常见卡点
- 只加了前端没放服务端脚本:JavaScript 只是界面和调用入口,真正的拼写建议来自服务端的 GNU Aspell,服务端文件必须一并部署。
- 构造函数参数写错:传入的应是文本输入对象本身(如
document.myform.mytextarea),而不是它的值。 - 想检查多个输入框:把多个文本对象一起传给
spellChecker构造函数即可,不需要为每个输入框单独初始化。 - 不确定写法是否正确:以官方演示页源码为准,它展示的就是最小可用集成方式。
适合与不适合的场景
| 场景 | 是否适合 | 原因 |
|---|---|---|
| Web 邮件、留言板、CMS 的输入框 | 适合 | 官方明确说明这是它的理想用途 |
| 一个页面多个 HTML 文本输入 | 适合 | 构造函数支持传入任意数量的文本对象 |
| 需要拼写建议质量的场景 | 适合 | 借助 GNU Aspell 的拼写建议能力 |
| 纯静态页面、无服务端脚本环境 | 不适合 | 依赖服务端脚本与 Aspell |
| 非文本输入的内容(如图片、文件) | 不适合 | 检查对象是 HTML 文本输入中的文字 |
如果你的网站有 PHP 或 Perl/CGI 环境,并且需要在用户输入文字时提供拼写检查,Speller Pages 的集成成本很低,值得先跑一遍官方演示再动手。