[英]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.