W javascript, w javascript hander zdarzenia onMouseMove, jak mogę uzyskać pozycję myszy w x, y corrdinates w stosunku do górnej części strony?onMouseMove uzyskać pozycję myszy
Odpowiedz
jeśli można użyć jQuery, następnie this pomoże:
<div id="divA" style="width:100px;height:100px;clear:both;"></div>
<span></span><span></span>
<script>
$("#divA").mousemove(function(e){
var pageCoords = "(" + e.pageX + ", " + e.pageY + ")";
var clientCoords = "(" + e.clientX + ", " + e.clientY + ")";
$("span:first").text("(e.pageX, e.pageY) - " + pageCoords);
$("span:last").text("(e.clientX, e.clientY) - " + clientCoords);
});
</script>
tutaj jest czysty javascript tylko przykład:
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}
document.Show.MouseX.value = tempX;//MouseX is textbox
document.Show.MouseY.value = tempY;//MouseY is textbox
return true;
}
hmm, przykład js wydaje się bardzo podobny do http: // www.codelifter.com/main/javascript/capturemouseposition1.html oprócz bez użytecznych komentarzy – RozzA
'id =" # divA "' i '$ (" divA ")' - ktoś spał, pisząc to – RozzA
@RozzA dzięki za uwagę. – TheVillageIdiot
Zwłaszcza mouseMove wydarzeń, że pożar szybko i gwałtownie, jego dobry odsuń pilniki przed ich użyciem -
var whereAt= (function(){
if(window.pageXOffset!= undefined){
return function(ev){
return [ev.clientX+window.pageXOffset,
ev.clientY+window.pageYOffset];
}
}
else return function(){
var ev= window.event,
d= document.documentElement, b= document.body;
return [ev.clientX+d.scrollLeft+ b.scrollLeft,
ev.clientY+d.scrollTop+ b.scrollTop];
}
})()
document.ondblclick = function (e) {alert (whereAt (e))};
Może być trochę przesada, aby użyć d3.js tylko do znalezienia współrzędnych myszy, ale mają one bardzo przydatną funkcję o nazwie d3.mouse(*container*)
. Poniżej znajduje się przykład z tym, co chcesz zrobić:
var coordinates = [0,0];
d3.select('html') // Selects the 'html' element
.on('mousemove', function()
{
coordinates = d3.mouse(this); // Gets the mouse coordinates with respect to
// the top of the page (because I selected
// 'html')
});
W powyższym przypadku, współrzędna x byłoby coordinates[0]
, a współrzędna y będzie coordinates[1]
. Jest to bardzo przydatne, ponieważ można uzyskać współrzędne myszy w odniesieniu do dowolnego kontenera, wymieniając ze znacznikiem (np. 'body'
), nazwę klasy (na przykład '.class_name'
) lub identyfikator (np. '#element_id'
)
+1, ale ** Fair Warning **: To podejście jest trochę zbyt powolne do użycia przeciwko 'onmousemove'. W moim projekcie miałem już d3.js, więc go wypróbowałem, ale nie jest wystarczająco sprytu dla mojego przypadku użycia. – elrobis
to wypróbowany i działa we wszystkich przeglądarkach:
function getMousePos(e) {
return {x:e.clientX,y:e.clientY};
}
Teraz można go używać w przypadku takiego:
document.onmousemove=function(e) {
var mousecoords = getMousePos(e);
alert(mousecoords.x);alert(mousecoords.y);
};
możliwe duplikat [Jak zdobyć pozycję myszy w jQuery bez myszy -events?] (http://stackoverflow.com/questions/4517198/how-to-get-mouse-position-in-jquery-without-mouse-events) – Lucio