2016-05-01 18 views
1

I Mauskoordinaten auf Leinwand testen kann, wenn es keine Bildlaufleiste mit ist:Wie kann ich testen Mauserkennung auf Leinwand (JavaScript), wenn die Höhe der Leinwand auf den Bildschirm des Höhe übersteigt (wenn die Bildlaufleiste angezeigt)

var mx = evt.clientX - canvas.offsetX 
var my = evt.clientY - canvas.offsetY 

Wenn ich jedoch die Webseite herunterscrolle und die Maus neu positioniere, sind die Koordinaten verzerrt.

Irgendwelche Vorschläge?

+0

Lieber Li Ming, Hast du das Gefühl, dass meine Antwort eine hilfreiche Antwort für dich war? –

+0

Ja, Ihre Antwort hat mir wirklich geholfen. :) –

+0

Auf Stack Overflow, wenn eine Antwort Ihr Problem vollständig löst, ist es üblich, es als akzeptiert zu markieren, indem Sie auf das graue Häkchen links davon klicken. Dies verleiht dem Fragesteller und dem Antworter einen guten Ruf. Vielen Dank! –

Antwort

0

Es klingt, als ob Sie versuchen, die Position der Maus auf der Leinwand zu testen (und nicht die Position der Maus auf dem Bildschirm). Dafür reichen evt.offsetX und evt.offsetY aus, auch wenn eine Bildlaufleiste vorhanden ist.

Bitte beachten Sie die hier Live-Demo zu arbeiten, und Ihre JS-Konsole öffnen, und Sie werden die Cursorkoordinaten in Bezug auf die Leinwand sehen sein können:

var canvas = document.getElementsByTagName("canvas")[0]; 
 

 
canvas.onmousemove = function(evt) { 
 
    var mx = evt.offsetX; 
 
    var my = evt.offsetY; 
 
    console.log(mx, my); 
 
}
<canvas height="800" width="200" style="border: solid black 1px"></canvas>