圖解Js event對象offsetX, clientX, pageX, screenX, layerX, x區別

通過 3 張圖和 1 張表格,輕鬆區別 JavaScript Event 對象中的offsetX, clientX, pageX, screenX, layerX, x等屬性。

一、測試代碼如下:

[html] view plain copy
  1. <!DOCTYPE HTML>  
  2. <html lang="zh-cn">  
  3. <head>  
  4. <meta charset="utf-8" />  
  5. <title>Javascript</title>  
  6. <style>  
  7. body{margin:0;padding:0;background:#ccc;font-size:12px;overflow:auto}  
  8. .main{width: 500px;height: 330px;position: relative;margin: 250px auto 0;background-color: #eee;}  
  9. .box{position: absolute;width: 220px;height: 180px;background-color: orange;top: 80px;left: 80px;}  
  10. </style>  
  11. </head>  
  12.   
  13. <body style="height:1600px;">  
  14. <div class="main">  
  15.     <div class="box" id="box"></div>  
  16. </div>  
  17.   
  18. <script>  
  19. var oBox = document.getElementById('box');  
  20.   
  21. window.onload = function(){  
  22.       
  23.     oBox.onmousedown = function(ev){  
  24.         ev = ev || window.event;  
  25.           
  26.         console.log(ev.offsetX, ev.offsetY);  
  27.         console.log(ev.clientX, ev.clientY);  
  28.         console.log(ev.pageX, ev.pageY);  
  29.         console.log(ev.screenX, ev.screenY);  
  30.         console.log(ev.layerX, ev.layerY);  
  31.         console.log(ev.x, ev.y);  
  32.     }  
  33. }  
  34.   
  35. </script>  
  36. </body>  
  37. </html>  

二、不同瀏覽器對這些屬性的支持:


三、圖解 event.offsetX,event.clientX,event.pageX,event.screenX屬性

點擊這裏查看大圖


四、圖解 event.layerX,event.layerY 屬性

點擊這裏查看大圖


五、圖解 event.x,event.y 屬性

點擊這裏查看大圖


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

六、Jquery 兼容寫法

jQuery event 事件對象,包含有 event.offsetX, event.clientX,event.pageX,event.screenX等屬性(firefox 瀏覽器中, offsetX 爲 undefined)。firefox 獲取 offsetX / offsetY 的值,需要通過 event 對象的屬性 originalEvent。

[javascript] view plain copy
  1. <script>  
  2. $(function(){  
  3.     $("#box").mousedown(function(event){  
  4.         console.log(event.offsetX, event.offsetY);  
  5.         console.log(event.clientX, event.clientY);  
  6.         console.log(event.pageX, event.pageY);  
  7.         console.log(event.screenX, event.screenY);  
  8.   
  9.         /* firefox */  
  10.         console.log(event.originalEvent.layerX, event.originalEvent.layerY);  
  11.     });  
  12. });  
  13. </script>  
發佈了35 篇原創文章 · 獲贊 39 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章