2012-11-18

ZK-1220 的故事

ZK-1220 (又)是一個抓蟲三刻鐘,除蟲三秒鐘的 issue。

故事是這樣的,在 ZK 6.0 之後 InputElement/InputWidget(Java/JS)增加了 instant 這個 attribute。 當 instant="true" 的時候,所有的改變會馬上送到 server 端。 如果 end-user 在有設定 instantTextbox 輸入之後馬上(更精準地說是 350ms 內)改變游標位置, 則游標還是會回到最尾端。

2012-11-14

ZK-1441 的故事

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。