【 以下文字转载自 Google 讨论区 】
发信人: modico (modico), 信区: Google
标 题: gmail client code review,part 1
发信站: 水木社区 (Thu Oct 19 16:59:22 2006), 站内
我正在看google gmail的客户端代码,当然是被混淆过啦。这是开源的吗?如果哪位知道是,就告诉一声,免得还要动用一些特工的手段。拉拉杂杂的看一些,记一些。
google如何将客户端的异常通知服务器?
(new Image).src = "?view=jserr&jsstate=...&jsmsg=...&random=" + (new Date).getTime()"
当然不需要一说到通知服务器就动用xmlhttp,一些简单,不太重要的消息通知利用一下已有的设施就可以。google这里用的是 Image 对象,这是最简单的方法。这个类似于UDP,发出不管,无论成败。url最后面的那部分random=是为了防止浏览器使用缓存数据而不实际连接服务器。其实google的开发员A已经把(new Date).getTime()实现为一个函数了,但这里的开发员B还是直接写了。
jsstate 有以下一些值: Before load; Loading n%; Done loading; Init done
gmail 登录后,显示一个空白窗口,上有“正在加载”几个字,这个窗口是个FRAMESET,主窗口叫main,占满了浏览器窗口,另一个窗口叫js,不可见,它里面就是一个接一个的<script>块,或大或小,有70多个,估计是一些单个的js文件合并而成,总大小虽经过gz压缩,也有百来K吧。在一些script块的结束会调用一下记录进程的_B_Progress 函数,jsstate的值就相应变为 Loading n%. 每一个script都用try/catch包起来,所有的异常都统一由 _B_Err 函数处理。
--
FROM 218.249.84.*