文字框裡的文字拖曳問題

我跟恐龙♂在 QQ 群裡發現 Firefox 的文字框拖曳有一些很奇怪的問題,還沒特別
去看規範有沒有寫/該不該寫這一部份,不過先整理過來,鼓勵多一點人一起討
論,以下 A 代表拖曳起點,B 代表拖曳終點:

1. 「複製」vs.「移動」

Firefox 在兩個 <input> 中選取、拖曳的時候,文字是被複製而不像是被剪掉之
後移動,其他瀏覽器則都是「移動」

我跟恐龙♂好像覺得「移動」會比較簡單。

2. 事件順序

恐龙♂是覺得照常理應該是

a. 拖拽事件完成
b. 焦点进入 B
c. A 的 onchange

接下來

d. 焦点离开 B
e. B 的 onchange

IE9 下 d. 後面不會接著 e.,要再進去出來才會有的樣子(b.d.e)。c. 對於
Firefox 不太適用(因為是複製),然後 e. 好像會永遠不會發生(就算後來再
b.d 一次還是不會出來),顯然是 bug。

3. selection 更動

如果是「移動」,那基本上毫無疑問,selection 會變成在 B 上。就算是「複
製」恐龙♂還是覺得 selection 應該是 B 上新的那個副本。

理由好像是:
[[
刚才的 A 和 B,拖拽的问题,规范不知道说没说 selection 的问题啊。
Firefox 是 A 选择了内容后,拖到 B 或者失去焦点的时候,selection range 是
仍然存在的。
这时候把什么东西拖到 A 会很难放下去,不能放在刚才选定的内容上,只能放在
两边,放下后会覆盖刚才的选区。
别扭的很那。
]]

我有點不太懂,這個「什么东西」是說從外面拖曳進來的東西?不然怎麼會有兩個
selection?怎麼樣的情況在這種狀況下要拖東西進來 A?



大概就是這樣了,如果能用 initDragEvent 弄出一個自動化的測試案例應該比較
容易測試一點。

Received on Thursday, 7 June 2012 12:51:42 UTC