2011-04-27 97 views
13

我目前正在實施一個小型演示應用程序,試圖讓我的頭繞着HTML5拖放。我現在想要做的是在用戶拖動時獲取光標的位置,但是我遇到了一些問題。拖動時獲取鼠標位置(JS + HTML5)

看起來,'mousemove'事件在拖動時沒有被觸發,這阻止了我找出鼠標的當前位置。我可以使用'drag'事件,但我無法弄清楚如何從'drag'事件對象獲取位置。

回答

18
// JavaScript 

document.addEventListener("dragover", function(e){ 
    e = e || window.event; 
    var dragX = e.pageX, dragY = e.pageY; 

    console.log("X: "+dragX+" Y: "+dragY); 
}, false); 

// jQuery 

$("body").bind("dragover", function(e){ 
    var dragX = e.pageX, dragY = e.pageY; 

    console.log("X: "+dragX+" Y: "+dragY); 
}); 

可運行代碼下面片段:

​​

+0

有相當多的dragover事件。如果忽略大多數人,這不是一個好的理念嗎?讓我們說..每10次事件處理?現在我不知道我該怎麼做,但我會花時間考慮一下。 – Tchypp 2012-02-10 19:22:38

+0

@Tchypp嗯,是的,有很多事件,指針位置更新必然會產生很多事件。這取決於你在這些事件中做了什麼,以及它的密集程度。大多數人需要實時信息,而不是每像素更新。跟蹤拖延事件的開始,每個事件的增加以及僅對第10個事件採取行動的成本都必須權衡在每個事件期間的行爲。 – mattsven 2014-11-07 03:46:22

11
document.ondragover = function(evt) { 
    evt = evt || window.event; 
    var x = evt.pageX, 
     y = evt.pageY; 

    console.log(x, y); 
} 

jsFiddle

如果你使用jQuery ...

$(document).on('dragover', function(evt) { 
    var x = evt.pageX, 
     y = evt.pageY; 

    console.log(x, y); 

}); 
+0

... = function(evt){evt = evt || window.event; ...} – Tracker1 2011-04-27 02:18:01

+0

@ Tracke1我以爲我應該這樣做:) – alex 2011-04-27 02:27:15

+0

@alex那麼,爲什麼你不這樣做呢? – 2012-12-19 05:48:26