全部博文(465)
分类: Java
2012-05-11 16:24:10
用JavaScript 来写浏览器上的应用
我要做一个聊天室
大概是在1998 年12 月中旬,我的个人网站完工了。这是一个文学网站,这个网站在浏览器上用到了Java Applet 和JavaScript,并且为IE 4.0 的浏览器提供了一个称为“搜索助手”的浮动条(FloatBar),用于快速地向服务器提交查询文章的请求。而服务器上则使用了用Delphi 开发的ISAPI/CGI,运行于当时流行的Windows NT 上的IIS 系统。
我接下来冒出的想法是:要做一个聊天室。因为在我的个人网站中,论坛、BBS 等都有其他网站免费提供,唯独没有聊天室。
1999 年春节期间,我在四川的家中开始做这个聊天室并完成了原型系统(我称之为beta 0);一个月后,这个聊天室的beta 1 终于在互联网上架站运行(如图1-1 所示)。
这个聊天室的功能集设定见表1-1。
在这个聊天室的右上角有一个“隐藏帧”,是用Frameset 来实现的。这是最早期实现Web RPC(Remote Procedure Call)的方法,那时网页开发还不推荐使用IFrame,也没有后来风行的AJAX。因此从浏览器下方的状态栏中,我们也可以看到这个聊天室在调用服务器上的.dll——这就是那个用Delphi 写的ISAPI CGI。当时我还不知道PHP,而且ASP也并不那么流行。
这个聊天室在浏览器上大量地使用了JavaScript。一方面,它用于显示聊天信息、控制CSS 显示和实现界面上的用户交互;另一方面,我用它实现了一个Command Center,将浏览器中的行为编码成命令发给服务器的ISAPI CGI。这些命令被服务器转发给聊天室中的其他用户,目标用户浏览器中的JavaScript 代码能够解释这些命令并执行类似于“更名”、“更新列表”之类的功能——服务器上的ISAPI 基本上只用于中转命令,因此效率非常高。你可能已经注意到,这其实与现在的AJAX 的思想如出一辙。
虽然这个聊天室在beta 0 时还尝试支持了NN 4,但在beta 1 时就放弃了,因为IE 4 提供的DHTML 模型已经可以使用insertAdjacentHTML 动态更新网页了,而NN 4 仍只能调用document.write 来修改页面。
本文节选自《JavaScript语言精髓与编程实践(第2版)》一书。
图书详细信息:http://blog.chinaunix.net/space.php?uid=13164110&do=blog&id=3195992