簡體   English   中英

如何為所有調用創建Prototype Ajax.Updater onComplete掛鈎

[英]How to create a Prototype Ajax.Updater onComplete hook for all calls

如果dom元素已被Ajax.Updater更新,是否有機會在原型框架中進行觀察?

我不想在onComplete參數中編寫函數,而是要觀察所有Ajax.Updater調用的事件。 關於如何做到這一點的任何想法?

Ajax.Responders ,它允許您觀看“ ajax事件”(不是真正意義上的javascript事件)。 API表示傳遞給回調的第一個參數是請求者對象,因此您可以專門檢查它是否是Ajax.Updater ,然后檢查它的.container.success以查找要更新的元素ID。 您可能可以假設,因為它是一個onComplete事件,所以所引用的元素將被更改。

我認為沒有onComplete處理程序是不可能的,除非您想重寫原型ajax API。 但是,您不必直接將閉包傳遞給onComplete處理程序。

您可以做的是在javascript代碼的頂級范圍內創建一個空對象:

 var updates = { } ;

現在,您將設置onComplete參數以包含一個緊湊函數,該函數通過您更新的div的名稱(為多個更新加上+日期)將屬性設置為updates對象:

 function update() {

     var divName = arguments[0] ;
     var date = new Date() ;

         if( updates[divName] ) { //!! if there is an entry for that div fill date
                 updates[divName].push(date) ;
         } else { //!! else create a new array with the current date
                 updates[divName] = [ date ] ;
         }

 }

現在,您可以通過使用div名稱檢查對象的屬性來檢查更新:

 /* code */
     if( updates[divName] !== null ) {
         isAlreadyUpdated() ;
     } else {
         isNotAlreadyUpdated() ;
     }
 /* more code */

順便說一句,我不排除在原型API中可能有一種方法可以執行類似操作的可能性。 我對原型不那么熟悉。

但是,如果沒有,我希望這會有所幫助!

FK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM