day-14.1 鼠标事件详解
前端通过鼠标事件可以完成一些很酷炫的操作;
鼠标事件可以给函数传一个实参,这个实参记录了这个鼠标事件的所有信息;
比如,我们写一个函数,function (e){.....//code}去接收鼠标事件的实参;
1 document.onclick = function (e) { 2 console.log(e); //点击会输出记录的事件 3 }
接收的实参里面含有

事件传过来的参数很多,具体看需求去调用;
今天主要讲解的 pageX和 pageY ;以及 clientX和clientY 两个参数;
clientX和clientY是可视区域的X和Y,怎么理解可视区域,就是点击的时候只以当前客户端的窗口的坐标为准,而跟document.body的宽高坐标无关;
1 <head> 2 <style> 3 body { 4 width:2000px; 5 height:2000px; 6 } 7 8 </style> 9 </head> 10 =<body> 11 <div id="wrap"></div> 12 13 <script> 14 document.onclick = function (e){ 15 console.log(e.clientX+":"+e.clientY); //窗口缩小的话以当前窗口(可视区域)为准;输出的是该事件触发的点在当前窗口(可视区域)的X和Y,并不是该点在body 的X和Y; 16 } 17 </script> 18 =</body>
pageX和pageY则刚好相反,是页面的X和Y,就是点击的时候以点击位置在document.body的坐标为准,跟当前窗口(可视区域无关);
1 <script> 2 document.onclick = function (e){ 4 console.log(e.pageX+":"+e.pageY); //输出坐标; 5 } 6 </script>
pageX和pageY在IE8里面不兼容,如果碰到IE8 的需求,要把他转换成e.clientY+document.documentElement.scrollTop才行;
1 <script> 2 document.onclick = function (e){ 3 e = e || window.event; 4 //console.log(e.pageX+":"+e.pageY); 5 console.log((e.clientX+document.documentElement.scrollLeft)+":"+(e.clientY+document.documentElement.scrollTop)); 6 } 7 </script>
兼容写法;
1 e.pageX = e.pageX || e.clientX + document.documentElement.scrollWidth;
浙公网安备 33010602011771号