[ js ] prototype.js/observe

看板Ajax作者 (吹笛牧童)時間14年前 (2009/07/23 13:11), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/2 (看更多)
最近喜歡用 observe 把一些函式綁在 event 上,但感覺還是有小小的差別 1.優點:可以綁不只一個 考慮數個檔交互 include 的現象 a.js include b.js 兩檔內各有一個 onload 這種寫法 onload = function(){....} 結果是只有一個 onload 能動 因為 onload 是一個變數,就好像 a=5; a=6; 最後 a 會被洗到 6 但如果是 observe,就都會動 Event.observe(this, 'load', function(){....}) 檢查變數,找不到變數的值被改變,可以說這或許是一種模擬? 比如說,從最外層的 parent 裏準備一個陣列,放所有 observe 設定 當事件 onload 發生時,用 for loop 掃一遍,找得到的全執行 但如果這樣做速度不是會很慢嗎? 2.缺點:有一點不相容 無法確定是不是我不會用,但我碰上了,正在迴避中.. $('id').onkeypress = function(event){return false}; 其實我是要做按鍵的過濾,比如限定只輸入數字之類 所以我攔截 onkeypress,必要時 return false; 上面那行可以使我的 input 一個字都打不出來 但如果用 observe 做,就不成了 $('id').observe('keypress', function(event){alert('la');return false}); 每按一個鍵,內部的函式有被執行(alert 有動作) 但是 return false 根本沒用,字還是一直被打出來 因為我要對一整個輸入陣列做設定 本來要用 [].each('observe', 'keypress', function(){}) 去設的 這下就不能用了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.65.16

07/23 17:41, , 1F
呼叫event object的preventDefault method 或者把
07/23 17:41, 1F

07/23 17:42, , 2F
returnValue設為false @@
07/23 17:42, 2F

07/23 19:21, , 3F
謝謝,這招有用,但有時 preventDefault 函式不存在..
07/23 19:21, 3F

07/23 19:22, , 4F
js 真恐怖,相容性問題一堆呀..
07/23 19:22, 4F

07/23 19:45, , 5F
記得preventDefault是標準 但IE沒有實作 在IE下必須要用非
07/23 19:45, 5F

07/23 19:48, , 6F
標準的returnValue=false來代替 @@
07/23 19:48, 6F

07/23 20:17, , 7F
也不是,我在 IE 下有用 preventDefault;但還是我上面兩種
07/23 20:17, 7F

07/23 20:17, , 8F
用法的差別,onload=function or observe,preventDefault未
07/23 20:17, 8F

07/23 20:17, , 9F
必存在;反正判斷存在就呼叫,不存在就用傳回值..
07/23 20:17, 9F
文章代碼(AID): #1AP_4A6f (Ajax)
文章代碼(AID): #1AP_4A6f (Ajax)