如果dom元素已由Ajax.Updater更新,是否有機會在原型框架內觀察?如何爲所有調用創建原型Ajax.Updater onComplete掛鉤
我不想在onComplete參數中編寫函數,而是希望觀察所有Ajax.Updater調用的事件。任何想法如何做到這一點?
感謝您的幫助
如果dom元素已由Ajax.Updater更新,是否有機會在原型框架內觀察?如何爲所有調用創建原型Ajax.Updater onComplete掛鉤
我不想在onComplete參數中編寫函數,而是希望觀察所有Ajax.Updater調用的事件。任何想法如何做到這一點?
感謝您的幫助
我不認爲你可以去沒有onComplete
處理程序,除非你想重寫原型AJAX API。但是,您不必直接將閉包傳遞給onComplete
處理程序。
你可以做什麼是你的JavaScript代碼中創建頂層範圍的空對象:
var updates = { } ;
現在,您將設置onComplete
參數包含一個緊湊的功能,通過設置屬性爲updates
對象您更新div的名稱(+日期多次更新):
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
有Ajax.Responders
它可以讓你觀看 'AJAX事件'(在JavaScript意義上並不是真正的事件)。 API表示傳遞給回調函數的第一個參數是請求者對象,因此您可以檢查它是否爲Ajax.Updater
,然後檢查它的.container.success
以查找正在更新的元素ID。你可以假設它是一個onComplete
事件,那麼被引用的元素將被改變。