其他应用中的 JavaScript
通过使用 JavaScript 的引擎的独立实现,比如 Rhino,SpliderMonkey,V8 等,可 以将 JavaScript 应用到几乎所有的领域,比如应用程序的插件机制,高级的配置文件分析,用户可定制功能的应用,以及一些类似与浏览器场景的比如 Mozilla 的 ThunderBrid,Mozilla 的 UI 框架 XUL,笔者开发的一个 Todo 管理器 sTodo(在第十五章详细讨论)等。
图 sTodo 一个使用 JavaScript 来提供插件机制的 Java 桌面应用
Java 版的 JavaScript引擎原生的可以通过使用Java对象,那样将会大大提高JavaScript 的应用范围,如数据库操作,服务器内部数据处理等。当然,JavaScript 这种动态语言,在 UI 方面的应用最为广泛。
著名的 Adobe reader 也支持 JavaScript 扩展,并提供 JavaScript 的 API 来访问PDF 文档内容,可以通过 JavaScript 来定制 Adobe Reader 的界面以及功能等。
app.addMenuItem({
cName: "-",
// menu divider
cParent: "View",
// append to the View menu
cExec: "void(0);"
});
app.addMenuItem({
cName: "Bookmark This Page &5",
cParent: "View",
cExec: "AddBookmark();",
cEnable: "event.rc= (event.target != null);"
});
app.addMenuItem({
cName: "Go To Bookmark &6",
cParent: "View",
cExec: "ShowBookmarks();",
cEnable: "event.rc= (event.target != null);"
});
app.addMenuItem({
cName: "Remove a Bookmark",
cParent: "View",
cExec: "DropBookmark();",
cEnable: "event.rc= (event.target != null);"
});
app.addMenuItem({
cName: "Clear Bookmarks",
cParent: "View",
cExec: "ClearBookmarks();",
cEnable: "event.rc= true;"
});
为 Adobe Reader 添加了 4 个菜单项,如图:
UltraEdit 编辑器在新的版本中也加入了对脚本化的支持,使用的脚本语言正是
JavaScript,用户可以通过脚本来控制编辑器的一些公开对象,下面是一个简单的实例:
UltraEdit.activeDocument 表示当前活动文档,write 方法会将字符串写入当前活动文档的缓冲区,运行这个脚本,可以得到下面的效果:
当然,这里仅是一个简单实例,关于 UltraEdit 脚本化的详细信息请参考 UltraEdit 的帮助文件或相关文档。
另一个比较有意思的 JavaScript 实例为一个在线的遗传算法的演示,给定一个图片, 然后将一些多边形(各种颜色)拼成一个图片,拼图的规则为使用遗传算法,使得这些多变形组成的图片与目标图片最为相似:
可见,JavaScript 在其他方面的也得到了广泛的应用。
{$ activeFileHint $}