JavaScript事件对象详解:Button与clientX/clientY属性解析

作者:流萤时间:2026-10-24 00:12:49浏览:345

本文深入解析JavaScript事件对象中的关键属性。重点介绍Button属性在不同鼠标按键组合下的整数值定义,以及IE与DOM模型在数值判定上的差异。同时详细阐述clientX和clientY属性如何获取鼠标在客户端区域的精确坐标,并提供兼容现代浏览器的实时坐标追踪示例代码,帮助开发者掌握拖拽开发中的事件处理基础。

在阅读本文前,建议先阅读《Javascript拖拽&拖放系列文章2之offsetLeft、offsetTop、offsetWidth、offsetHeight属性》,以便更好地理解上下文逻辑。


接下来,我们将正式进入事件对象的核心内容讲解。


事件对象属性详解

首先介绍模型中相同或相似的事件属性与方法。


1. Button属性


该属性为Integer类型,具备可读和可写特性。在特定的鼠标事件中,它用于标识当前按下的鼠标按钮状态,这在判断是否由鼠标左键触发mousedown事件时尤为重要。其所有取值及对应含义如下(参考自《Javascript高级程序设计》):


3.1 e/window.Event对象的属性/方法


3.1.1 IE事件模型与DOM事件模型的对比如下:


0 - 未按下任何按钮


1 - 按下鼠标左键


2 - 按下鼠标右键


3 - 同时按下左键和右键


4 - 按下鼠标中键


5 - 同时按下左键和中键


6 - 同时按下右键和中键


7 - 同时按下左键、中键和右键


需要注意的是,mouseup事件中的button属性返回值与mousedown事件完全一致。



注:在兼容DOM事件模型的浏览器中,0代表按下左键,数值1不存在,2代表右键;对于非鼠标事件,该属性返回“undefined”。



clientX与clientY坐标属性

2. clientX、clientY属性


这两个属性的类型均为Integer,单位为像素,且可读可写。它们分别表示事件发生时,鼠标指针在浏览器客户端区域(不包含工具栏、滚动条等)的x轴和y轴坐标。为了更直观地理解,请参考下图说明:


事件对象属性详解

图3.1:clientX和clientY属性示意图

 

以下代码提供了一个简单的示例,用于实时定位鼠标坐标并将结果显示在两个文本框中。该示例兼容目前所有现代浏览器,您可以尝试运行查看效果。

示例代码1:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">

body
{
border
:1px solid black;
margin
:0px;
}
</style>
<script type="text/javascript" language="JavaScript">
document.onmousemove
=move;
function move(e){
if(!e)
{
e
=window.event;
}
var xElement=document.getElementById("x");
var yElement=document.getElementById("y");
xElement.value
=e.clientX;
yElement.value
=e.clientY;

}
</script>
</head>
<body>
<input type="text" id="x" value="" />
<input type="text" id="y" value="" />
</body>
</html>






3 type属性
1

234下一页阅读全文

作者最新文章