ZK-1220 (又)是一個抓蟲三刻鐘,除蟲三秒鐘的 issue。
故事是這樣的,在 ZK 6.0 之後 InputElement
/InputWidget
(Java/JS)增加了 instant
這個 attribute。
當 instant="true"
的時候,所有的改變會馬上送到 server 端。
如果 end-user 在有設定 instant
的 Textbox
輸入之後馬上(更精準地說是 350ms 內)改變游標位置,
則游標還是會回到最尾端。
ZK-1220 (又)是一個抓蟲三刻鐘,除蟲三秒鐘的 issue。
故事是這樣的,在 ZK 6.0 之後 InputElement
/InputWidget
(Java/JS)增加了 instant
這個 attribute。
當 instant="true"
的時候,所有的改變會馬上送到 server 端。
如果 end-user 在有設定 instant
的 Textbox
輸入之後馬上(更精準地說是 350ms 內)改變游標位置,
則游標還是會回到最尾端。
ZK-1441 的故事有點 critical,基本上他一定要「快速連續切換 tab」才會有效果,正常操作行為很難遇到這個狀況。
WTF......
終究是名副其實可以複製的 bug,也就只能硬著頭皮上。
Tab._sel()
Tab._setSel()
Tabpanel._sel()
jqzk.slideDown(),在這裡 this.dimension() 會取到錯(較小)的值
基本上無力去探究 jqzk.dimension()
為什麼會取到不對的值,畢竟正常情況下運作是正確的。
只能猜測是因為 animation 的原因導致 jquery 錯亂?
中間試過 setTimeout()
來等 animation 完再換下一個 tab 操作,不過失效(細節略 XD)。
後來只能把腦筋動到弄一個 flag: Tabbox._animating
,在呼叫 slideDown()
之前設定,
透過 slideDown()
的 callback function 來拿掉,然後進入 Tab._sel()
的時候用這個判斷是否要擋掉不做。
至於為什麼不用 zk.animating()
,那是因為只要有其他 animation 在跑(例如檔案上傳的 Progressmeter
),
就會判定不過而被卡掉。(反過來說,用 zk.animating()
來作某些事情的都有這個隱憂?)
套句死神裡頭的台詞(其實我沒看過):「其實我不想用這招的」, JS 對 field 作 CRUD 實在太方便了,一點控管辦法也沒有,只好多寫幾行註解結束這個 issue。