[心得] IE 對事件模型的 bug
小弟最近在工作的時候順道開發自己的 js 模組,
在同一元素的掛載功能上,IE 部份都是用 attachEvent 的方式來處理。
譬如說如果一個 img 要實現 drag 和 resize,
會各自在模組中幫他掛上 onmousedown 時候觸發的 function。
大體來說模組各自都是像這樣的流程(以 drag 為例)
初始時會 element attachEvent onmousedown drag ()
而 drag 中會掛載 document 下的 mousemove 和 mouseup function,
此處掛 document 不掛 element 本身,是為了順暢移動。
現在小弟遇到很有趣的一個 bug 是,
小弟對一個 img 掛上三個 mousedown event funciton,
分別是 special, drag, resize…
在 special 中,mouse down 後會掛載 document 的 mousemove 和 mouseup,
其中 mouseup function 是將此 img 自目前節點中 remove ,移到另一個 div 內。
但是在 node remove / append 的過程中,IE 似乎會因為節點移動,
使得 event 中斷。
流程圖大約是這樣:
-> mousedown(on img)
-> 觸發 special, drag, resize
-> special, drag, resize 各自對 document 的 onmousemove, onmouseup
掛載對應函式。
-> mousemove(drag img)
-> 觸發剛剛掛載的 special, drag, resize 對應 mousemove 函式
-> mouseup(drag img stop)
-> 觸發剛剛掛載的 special, drag, resize 對應 mouseup 函式,
其中 special onmousemove function 中會將 img 移動到別的 div 下。
-> 一旦 node 移動,此時觸發的 mouseup 中斷,
造成 drag, resize 的 mouseup function 接不到 mouseup 觸發。
不過在 MF 下即使 node 被移動了,drag 和 resize 依舊可以成功收到
mouseup 的 event。
不知道有沒有大大有相關經驗的? -_-|||
感覺像是 IE 事件模型的 bug …
(另外這不是由於事件觸發的順序所造成的,
已經以各種方式測過 mouseup 時的事件順序了 囧rz)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.80.28.216
推
12/27 22:17, , 1F
12/27 22:17, 1F
→
12/27 22:18, , 2F
12/27 22:18, 2F
→
01/01 13:33, , 3F
01/01 13:33, 3F
推
01/01 17:57, , 4F
01/01 17:57, 4F
推
01/03 15:11, , 5F
01/03 15:11, 5F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 5 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章