如何实时获取鼠标的当前坐标
May 11, 2018 pm 02:18 PM本文来做一个简单的实时获取鼠标坐标的功能,在canvas动画开发中,获取鼠标的坐标,键盘的按键等等,都是常用的操作,我们就慢慢得把他们封装成一个公共库。
一、事件的兼容:
function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent('on' + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } }
上面兼容ie8以及修正this关键字在ie低版本的指向,下面兼容chrome和ff。其他更常用的封装可以参考我的javascript开源框架gdom
二、用立即表达式搭建一个基本的库
添加获取鼠标坐标的方法
;(function (window) { window.G = {}; function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent('on' + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } } G.getPos = function( dom ){ var oPos = { x : 0, y : 0 }; bindEvent( dom, 'mousemove', function( ev ){ var oEvent = ev || event, x, y; if ( oEvent.pageX || oEvent.pageY ){ x = oEvent.pageX; y = oEvent.pageY; }else { x = oEvent.clientX + document.body.scrollLeft || document.documentElement.scrollLeft; y = oEvent.clientX + document.body.scrollTop || document.documentElement.scrollTop; } x -= dom.offsetLeft; y -= dom.offsetTop; oPos.x = x; oPos.y = y; } ); return oPos; }; })(window);
三、引入封装的js库,绑定canvas为监听对象,打印当前鼠标的坐标
鼠标的坐标,我这里画了2根线,便于观察.
<head> <meta charset='utf-8' /> <script> ;(function (window) { window.G = {}; function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent('on' + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } } G.getPos = function( dom ){ var oPos = { x : 0, y : 0 }; bindEvent( dom, 'mousemove', function( ev ){ var oEvent = ev || event, x, y; if ( oEvent.pageX || oEvent.pageY ){ x = oEvent.pageX; y = oEvent.pageY; }else { x = oEvent.clientX + document.body.scrollLeft || document.documentElement.scrollLeft; y = oEvent.clientX + document.body.scrollTop || document.documentElement.scrollTop; } x -= dom.offsetLeft; y -= dom.offsetTop; oPos.x = x; oPos.y = y; } ); return oPos; }; })(window); </script> <style> #canvas{ border:1px dashed #aaa; } </style> <script> window.onload = function(){ var oCanvas = document.querySelector( "#canvas" ), oGc = oCanvas.getContext( '2d' ), width = oCanvas.width, height = oCanvas.height, oInfo = document.querySelector( "#info" ), oPos = G.getPos( oCanvas ); oCanvas.addEventListener( "mousemove", function(){ oGc.clearRect( 0, 0, width, height ); oGc.beginPath(); oGc.moveTo( oPos.x, 0 ); oGc.lineTo( oPos.x, height ); oGc.moveTo( 0, oPos.y ); oGc.lineTo( width, oPos.y ); oGc.closePath(); oGc.strokeStyle = '#09f'; oGc.stroke(); oInfo.innerHTML = '鼠标的当前坐标是:(' + oPos.x + ',' + oPos.y + ')'; }, false ); } </script> </head> <body> <canvas id="canvas" width="500" height="400"></canvas> <p id="info"></p> </body>
Atas ialah kandungan terperinci 如何实时获取鼠标的当前坐标 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk mendapatkan sambungan fail dalam Python?

Di mana untuk mendapatkan kod keselamatan Google

Gunakan fungsi math.Max untuk mendapatkan nilai maksimum dalam set nombor

Bagaimana untuk mendapatkan elemen terakhir LinkedHashSet di Java?

Program Java untuk mendapatkan saiz fail yang diberikan dalam bait, kilobait dan megabait

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP

Bagaimana untuk memasang dua kad SIM pada Realme 12 Pro?

Dapatkan kemas kini terkini sekarang: Betulkan kemas kini terkini yang tiada
