觀察了好一陣子的 xajax,但是從去年九月的 beta 4 之後更新速度就變慢了。一直礙於他是 beta 版本而不太敢用,但是又礙於我需要 setEvent 這樣的功能,老實說,我也考慮過 Ext JS Library 這一個強大的元件庫,不過,畢竟是使用習慣上的問題,加上我又很懶得重新開發,所以只好硬著頭皮把 xajax 升級。
從 0.2.5 要換到 0.5 beta 不是什麼困難的事情,官方的 wiki 文件 上有人寫出一些相對應的改變,畢竟在 0.2.5 上面可以應用的東西並不是非常多,而就算升級到 0.5 beta 來說,轉變也不算太大。只是說,有些地方要重寫就是了,這是個人覺得比較麻煩的地方。但是,老實說就算是要重寫,反正我自己的 ajax 也不會說太過於複雜,加上自己龜毛的把所有的 ajax 依照不同的使用方式切得很細,更新起來反而不是很麻煩。
基本上從 0.2.5 上面所使用到的,延續到 0.5 beta 是都可以使用,只是語法有修改,全部都要改掉就是了。升級完之後,我總覺得速度上有變快了點,不知道是不是錯覺?
新的 0.5 beta 4 多了蠻多東西的,比起 0.2.5 來說,更強大了點。想看 官方說明文件 的人可以自行參閱。我這裡大概敘述一下 Library 裡面的東西。
-
- setFlags,全新的變數設定方式,這是跟 0.2.5 差異最大的地方。
- setFlag,同上。
- registerEvent,註冊一個回呼函式,當 xajax 的設定條件觸發時呼叫。
- Available events:,有三種,beforeProcessing,afterProcessing,invalidRequest。
-
- getClass,取得控制元件的 Class 屬性名稱,官方特別註明調整過 (adjusted) 不太清楚是指什麼。
- clearAttributes,清除控制元件的屬性。
- clearEvents,清除與控制元件關聯的觸發事件。
- setEvent,將 DOM 的觸發事件指定到回呼函式。
- clearChildren,清除控制元件關連的子元件。
-
- loadPlugins,從特定資料夾中讀取外掛函式。
- registerPlugin,註冊外掛函式。
- generateClientScript,呼叫每一個外掛函式並且將其中的 Javascript 在頁面生成前輸出。
- getPlugin,取得外掛函式名稱。
-
- generateClientScript,在 HTML 頁面輸出前,呼叫 PluginManager 的同名函式。
- addCommand,在回響 (response) 命令中加入其他的命令。
-
- useSingleQuote,生成 Javascript 時使用單引號(')。
- useDoubleQuote,同上,但使用雙引號(")。
- clearParameters,清除在傳送請求中的所有參數。
- xajaxCustomRequest,這是在 xajaxCustomRequest.inc.php 中的一個函式,較為簡易用於取代 xajaxRequest.inc.php 的。
- clearVariables,在變數輸出到瀏覽器時先清除。
-
- plugin,就是註冊外掛,應該不用再解釋了吧。
- redirect,將瀏覽器重新導向到其他的 URL。
- setEvent,設定一個觸發控制項。
- addHandler,將一個觸發控制項安插置一個特定的元件中。
- removeHandler,將元件中的觸發控制項移除。
- setFunction,設定一個 Javascript 函式傳送到瀏覽器,可在瀏覽器中呼叫。
- wrapFunction,重新建構 Javascript 與既有的函式。
- includeScript,讀取一個 Javascript 檔案。
- includeScriptOnce,同上,但僅發生在該檔案未被讀取時,換句話說就是每個檔案僅讀取一次。
- removeScript,移除一個 Javascript 檔案。
- includeCSS,讀取一個 CSS 檔案。
- removeCSS,移除一個 CSS 檔案。
- waitForCSS,等待 CSS 讀取完畢再繼續執行 xajax。
- waitFor,延遲執行直到通過某個條件或是設定。
- sleep,同步執行時,設定每一個 ajax 的回應暫停時間,換句話說就是暫停幾秒的意思。
- setReturnValue,儲存回響 (response) 中部分的數值,應該是自己指定要儲存哪個部分或是哪一個數值。
- getOutput,取得輸出結果。
- printOutput,將輸出結果顯示在瀏覽器上。
-
- send,將輸出結果送到客戶端。
- getOutputEntities,這是會將輸出先自動呼叫函式修整 (套用當前設定之類) 過後再輸出。
有 setEvent 真的是好事一件。因為 DOM 裡面的 setAttribute 並不能用來做觸發事件的指定,這一點很妙,因為 Firefox 可以用,**但是 IE 是 10 不能用!**其他家我不知道正不正常。所以每次都要來個 innerHTML 其實也是很討人厭的事情。為了廣大的 IE6.0 的使用者,不得不低頭!現在有了這個之後,目前還沒有打算把那些元件庫的觸發事件全部都換成 setEvent,畢竟,萬一我換完之後,那 天殺的 IE 還是不能用的話,那我是換火大的喔!
對了,今天是 火狐娘 3.0 下載日,還沒下載的快去吧!