現在提起AJAX,大家都立刻會想起Gmail、gogle map這幾個經典的AJAX應用。Gmail的優良表現我們都看過了,那么它的實現你研究過了嗎?它怎么在幾個不同的瀏覽器上可以一致的實現xml異步調用的呢?一起來看看吧。
首先,登錄gmail以后我們會先進入這個頁面:
這是主框架網頁兼瀏覽器檢測頁。如果瀏覽器通過了檢測(支持javascript、cookie和xml控件)則在頁面上寫一段框架代碼。要注意到的是google在這里耍了一個小花招,那個叫做main的框架頁面里面看來沒有多少東西,好東東都在那個叫js的框架里面呢。
我們接著把這個js框架拉出來看看:整整1500多行的javascript代碼!這個頁面有240多k,幾乎全都是javascript代碼。其實其中大部分都是老生常談的js代碼了,不過我們可以一窺google的編碼風格:盡可能壓縮信息量,變量名能用一個字母的絕不用兩個,函數名一概都是兩個字母的,函數內的會車是沒有的,縮進也是沒有的。
雖然代碼沒有特地加密,但是如此處理一番之后也就沒什么可讀性了。還好系統的關鍵字是不能縮水的,順著xml控件的名字我們可以揪出來跟AJAX異步加載數據相關的幾個關鍵函數:
基本上就這么多了,沒有什么新鮮的東西。發送http請求之后它又怎么處理返回的xml的呢?事實上他沒有處理。他所處理的僅僅是最基本responseText,而cgi則直接生成js腳本到客戶端回調(用eval運行),或者生成文本信息。這就是為什么gmail可以輕松跨域幾個瀏覽器了。
作為最受推崇的一個AJAX應用,卻幾乎沒有用到xml。像這樣用xml控件來收發文本信息后在頁面上展現的技術,基本上就是現在AJAX最流行的應用方式了,不過這樣也能叫AJAX嗎?我寧可就叫它AJ,最多叫AJAH。今天先到這,下回再過來分析另一個完全不同的AJAX應用吧。
(T117)
原文轉自:http://www.anti-gravitydesign.com