« Protect files in Apache - 使用AUTH保护特定文件 | Main | Sun 18 September - 九月18日:中秋/国耻日/新域名 »
September 14, 2005
mail address Autocomplete - 邮件地址自动补齐实现
GMail正如google其他服务一样,是富有创新的产品,新一代的电子邮件服务。领先的界面体验和贴心的功能,使用户真正在使用电子邮件,而不是靠界面或花哨的功能吸引客户。
第一次试用GMail时惊叹GMail的两大特色:- JS框架的用户界面,速度超快
GMail在浏览器支持的情况下,使用了纯javascript的用户接口(UI),利用js来输出所有的内容。同时还利用其它DHTML/XML等相关技术,使得切换页面速度飞快,客户端能缓存页面及数据,并只下载变动的数据。使用起来就和本地应用程序差不多。
而且使用很便利。真的是觉得GMail很体贴人,和传统的Hotmail/Yahoo有很大区别。
- 贴心的自动补齐功能
对于经常用email的人而言,贴心便利的地址本是必不可少的。一般的地址本实现,再复杂也大抵和OutLook 的差不多,虽然功能强大,但使用起来还是不太舒服和方便。
而GMail的地址本出奇的简单,完全没有那些几乎都用不上的属性,如家庭地址,备用电话,国家地区等,只有简单的几项,而且收/发邮件时,能自动将发送/转发/回复的邮件地址加到地址本里,发邮件时在输入框内输入邮件地址,能自动补齐,方便之极。当时就有冲动想自己也实现一个。
后来,GMail的相关软件和第三方工具就由爱好者大量地开发出来了,在CPAN上有不少GMail的工具模块,但最想找到的还是自动补齐的实现,毕竟从头自己来做,工作量可真不小。
这两天碰巧在一个eba(企业级别商业应用程序)的网站上看到了demo,又发现了一些用户的评论,于是就“拿来主义”,测试了一下,感觉效果还可以。后又在google上找到一些其他的自动补齐的实现,最后选了一个较好的,作为目前webmail的测试版自动补齐。
为了提高速度,我对js程序进行了大量的修改,将原来的14.5K的体积压缩到9.2K,并修补了几个bug,并增加了列出全部地址的快捷键。截图见下:

- 获取在输入框内的键盘输入,获得inPut = keyCode
- 将inPut和邮件地址列表(例如放到数组中)进行匹配
- 如果匹配的话,则将列表以层(Div)+表格(Table)的形式显示
- 高亮(加)匹配那部分字符
- 如果遇到回车则将当前选中的mail地址放在输入框内
- 等待下一个输入的字符
在这个过程中,自己增加了一个快捷键“空格(space)”,程序将检测是否有合理的空格输入,如果有则显示所有的邮件地址。

Posted by hzqbbc at September 14, 2005 08:30 PM
Comments
我最近也正想研究一下邮件地址自动补齐,不知道老兄能不能提供点代码,可以发到我的邮箱里面,在此先谢过了!
Posted by: dkhero at November 10, 2005 08:12 PM
楼上的朋友:
如果需要研究自动补齐,可以参考ExtMail 开源项目,我在extmail里提供了增强模板的下载,里面就包含了自动补齐的技术及代码。您可以参考参考。
有什么疑问或心得,我们都可一起讨论。最好能到论坛上发表,地址:http://www.extmail.org/forum/
Posted by: hzqbbc at November 11, 2005 08:26 AM
extmail里提供了增强模板的下载里面的哪个文件
Posted by: mw at December 22, 2005 11:38 PM
画公仔不用画出肠的,人家已经指明了一条路,自己动手去做就是了.
Posted by: fengyong at January 2, 2006 02:10 PM