我廣泛利用HTML5本機拖動&下降,而且它幾乎完全表現自己,一個小小的例外。HTML5拖放行爲
我想什麼時候拖過上突出顯示我的dropzones。我最初試圖通過戴上文檔正文jQuery的聽衆,這樣來實現:
$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});
與lightdz()和dimdz()改變頁面上的所有dropzones的背景顏色樣式屬性,以使他們脫穎而出出。這沒有奏效。只要拖動的對象進入頁面上的子元素(如div容器),監聽器就會將其標記爲dragleave事件,並將下拉框變暗。
我解決此得到了應用聽衆頁面上的所有可見元素,而不只是身體。當穿過一個元素與另一個元素之間的邊界時,偶爾會有一些可見的閃爍,但看起來很好。
反正現在我已經改變lightdz()和dimdz(),使它們適用於快速的jQuery fadeTo()動畫所有非dropzones。這看起來真棒當它的工作,並使其非常明顯的用戶他們可以和不能放下東西。麻煩的是當它在元素邊界之間傳遞時,它應用淡入淡出動畫。這比背景顏色的偶爾閃爍要明顯得多,特別是因爲如果對象很快被拖動到多個邊界上,它會排列動畫並使頁面反覆淡入淡出。
即使我不打擾fadeTo()動畫,只是改變不透明度,它比背景顏色閃爍更明顯,因爲整個頁面變化而不僅僅是dropzone元素。
有什麼辦法來引用整個頁面爲的的dragover和dragleave事件的目的的單個元素?否則,有什麼辦法可以檢測到在瀏覽器窗口之外發生的拖放?如果我跳過dragleave事件,它看起來很好,但如果有任何對象被拖動到瀏覽器窗口上,然後掉到外面,整個頁面將保持淡化狀態。
似乎至少在一些瀏覽器上,這是event.originalEvent.pageX而不是event.pageX ... – 2012-03-01 06:04:08
不適用於歌劇和Firefox我的 – 2013-01-23 20:12:45
'.live'被depricated ..使用'.on'而不是http ://api.jquery.com/live/ – Lipis 2013-02-22 17:55:50