Event事件对象之鼠标_键盘事件对象

本文详细介绍了JavaScript中的Event事件对象,包括altKey、button、clientX、clientY、ctrlKey、charCode、key、keyCode、which、metaKey、relatedTarget、screenX、screenY和shiftKey等属性,探讨了它们的返回值、浏览器兼容性和应用场景,帮助开发者更好地理解和处理鼠标和键盘事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下大部分事件的浏览器支持

googleIEfirefoxsafariopera
truetruetruetruetrue

属性

1. altKey

返回一个布尔值。指示在指定的事件发生时,Alt 键是否被按下并保持住了

返回值

true,false,1,0表达的都是布尔关系。

event.altKey=true|false|1|0

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title>zsh</title>
    <style>
        div{
            height:200px;
            background:red;
        }
    </style>
</head>
<body>
    <div id='div1'>

    </div>
</body>
<script>
    div1.onclick = function(e){
        if(e.altKey){
            alert('alt');
        }else{
            alert('no alt');
        }
    }
</script>
</html>

2. button

可返回一个整数,指示当事件被触发时哪个鼠标按键被点击

event.button=0|1|2

返回值
  • 0 指定鼠标左键。
  • 1 指定鼠标中键。
  • 2 指定鼠标右键。
    注意: Internet Explorer 8 及更早IE版本有不同的参数:
  • 1 指定鼠标左键。
  • 4 指定鼠标中键。
  • 2 指定鼠标右键。
注意

对于惯用左手的鼠标配置,上面的参数是颠倒的。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>

 </body>
 <script>
        document.onclick = function(e){
            e.preventDefault();
            switch(e.button){
                case 0:alert('鼠标左键');
                break;
                case 1:alert("鼠标中键");
                break;
                case 2:function a(){            
                        alert("鼠标右键");
                    };
                break;
            }
        }
 </script>
</html> 

3. clientX

返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标。客户区指的是当前窗口。

提示
  • 该事件只返回相对于浏览器来说的水平坐标,不包含滚动的值。如果要获取相对于整个页面的坐标,可以使用 e.pageX 来代替,但是IE8及其以下版本不支持 e.pageX。推荐使用 document.body.scrollLeft + e.clientX 来获取相对于整个页面的坐标。

event.clientX

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body style='height:3000px;'>

 </body>
 <script>
 document.onclick = function(e){
    console.log(document.body.scrollTop + e.clientY);
    console.log(document.body.scrollLeft + e.clientX);
 }


 </script>
</html> 

4. clientY

返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标。 客户区指的是当前窗口。

提示
  • 该事件只返回相对于浏览器来说的水平坐标,不包含滚动的值。如果要获取相对于整个页面的坐标,可以使用 e.pageY 来代替,但是IE8及其以下版本不支持 e.pageX。推荐使用 document.body.scrollLeft + e.clientX 来获取相对于整个页面的坐标。

event.clientY

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body style='height:3000px;'>

 </body>
 <script>
 document.onclick = function(e){
    console.log(document.body.scrollTop + e.clientY);
    console.log(document.body.scrollLeft + e.clientX);
 }


 </script>
</html> 

5. ctrlKey

返回一个布尔值,指示当事件发生时,Ctrl 键是否被按下并保持住。

event.ctrlKey=true|false|1|0

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>

 </body>
 <script>

 document.onclick = function(e){
    alert(e.ctrlKey);
 }

 </script>
</html> 

6. charCode

返回onkeypress事件触发键值的字母代码

提示
  • Unicode 字符代码是一个字母的数字 (如数字 “97” 代表字母 “a”)。
  • 所有 Unicode 字符列表可查看菜鸟教程的 完整 Unicode 参考手册
  • 如果你需要将 Unicode 值转换为字符,可以使用 fromCharCode() 方法。
  • 如果该属性用于 onkeydownonkeyup 事件,返回值总为 “0”。
  • 该属性是只读的。
  • which 和 keyCode 属性提供了解决浏览器的兼容性的方法,最新版本的 DOM 事件推荐使用 key 属性来替代该方法。
  • IE8 及其更早版本不支持 which 属性。不支持的浏览器可使用 keyCode 属性。但是, keyCode 属性在 Firefox 浏览器的 onkeypress 事件中是无效的。 兼容这些浏览器你可以使用以下代码:var x = event.charCode || event.keyCode; // 使用 charCode 或 keyCode, 这样可支持不同浏览器
  • 你同样可以使用 keyCode 属性来检测特殊的按键 (如 “caps lock” 或 箭头按键)。 keyCode 和 charCode 属性提供了解决浏览器的兼容性的方法,最新版本的 DOM 事件推荐使用 key 属性来替代该方法。
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKeyshiftKey 属性。
  • onkeypress属性不支持检测特殊按键。
浏览器支持
googleIEfirefoxsafariopera
true9.0truetruetrue

event.charCode

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'/>
 </body>
 <script>
input.onkeyup = function(e){
    console.log(e.charCode|| e.keyCode);
 }

 </script>
</html> 

7. key

在按下按键时返回按键的标识符

提示
  • 按键标识符是表示键盘按钮的字符串,该属性的返回值可以是:
    • 单个字母 (如 “a”, “W”, “4”, “+” 或 “$”)
    • 多个字母 (如 “F1”, “Enter”, “HOME” 或 “CAPS LOCK”)
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKeyshiftKey 属性。
浏览器支持
googleIEfirefoxsafariopera
不支持9.023.0不支持不支持

event.key

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'/>
 </body>
 <script>
input.onkeyup = function(e){
    console.log(e.key);
 }

 </script>
</html> 

8. keyCode

在按下按键时返回onkeypress事件触发的键的值的字符代码,或者 onkeydownonkeyup 事件的键的代码。
两种代码类型的区别是:
* 字符代码 - 表示 ASCII 字符的数字
* 键盘代码 - 表示键盘上真实键的数字

两种类型的值不是都相等的,例如小写字符 “w” 和大写字符 “W” 有相同的键盘代码,因为他们他们键盘上 ( “W” 代码为 “87”),但是它们有不同的字符代码,两个字符输出是不一样的( “w” 和 “W” 字符代码为 “119” 和 “87”)

提示
  • 所有 Unicode 字符列表可查看菜鸟教程的 完整 Unicode 参考手册
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKey 或 shiftKey 属性。
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKeyshiftKey 属性。
  • 如果需要知道用户按下的是打印键 (如 “a” 或 “5”),建议使用 onkeypress 事件。如果需要知道用户按下的是功能键(如 “F1”, “CAPS LOCK” 或 “Home”) 可使用 onkeydown 或 onkeyup 事件。
  • 如果你需要将 Unicode 值转换为字符,可以使用 fromCharCode() 方法。
  • 该属性是只读的。
  • which 和 keyCode 属性提供了解决浏览器的兼容性的方法,最新版本的 DOM 事件推荐使用 key 属性来替代该方法。
  • keyCode 属性在 Firefox 浏览器的 onkeypress 事件中是无效的。 可以一起使用 which 和 keyCode 属性来解决:
    var x = event.which || event.keyCode// 使用 which 或 keyCode, 这样可支持不同浏览器

event.keyCode

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'/>
 </body>
 <script>
input.onkeypress  = function(e){
    console.log(e.which || e.keyCode);
 }

 </script>
</html> 

9. which

在按下按键时返回onkeypress事件触发的键的值的字符代码,或者 onkeydownonkeyup 事件的键的代码。
两种代码类型的区别是:
* 字符代码 - 表示 ASCII 字符的数字
* 键盘代码 - 表示键盘上真实键的数字

两种类型的值不是都相等的,例如小写字符 “w” 和大写字符 “W” 有相同的键盘代码,因为他们他们键盘上 ( “W” 代码为 “87”),但是它们有不同的字符代码,两个字符输出是不一样的( “w” 和 “W” 字符代码为 “119” 和 “87”)

提示
  • 所有 Unicode 字符列表可查看菜鸟教程的 完整 Unicode 参考手册
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKey 或 shiftKey 属性。
  • 如果你想查看是否按下了 “ALT”, “CTRL”, “META” 或 “SHIFT” 键,可使用 altKey, ctrlKey, metaKeyshiftKey 属性。
  • 如果需要知道用户按下的是打印键 (如 “a” 或 “5”),建议使用 onkeypress 事件。如果需要知道用户按下的是功能键(如 “F1”, “CAPS LOCK” 或 “Home”) 可使用 onkeydown 或 onkeyup 事件。
  • 如果你需要将 Unicode 值转换为字符,可以使用 fromCharCode() 方法。
  • 该属性是只读的。
  • which 和 keyCode 属性提供了解决浏览器的兼容性的方法,最新版本的 DOM 事件推荐使用 key 属性来替代该方法。
  • IE8 及其更早版本不支持 which 属性。不支持的浏览器可使用 keyCode 属性。但是,keyCode 属性在 Firefox 浏览器的 onkeypress 事件中是无效的。 可以一起使用 which 和 keyCode 属性来解决:
    var x = event.which || event.keyCode// 使用 which 或 keyCode, 这样可支持不同浏览器
浏览器支持
googleIEfirefoxsafariopera
true9.0truetruetrue

event.which

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'/>
 </body>
 <script>
input.onkeypress  = function(e){
    console.log(e.which || e.keyCode);
 }

 </script>
</html> 

10. metaKey

返回一个布尔值,指示当事件发生时,”meta” 键是否被按下并保持住。

提示
  • meta键对应window键。

event.metaKey

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>

 </body>
 <script>
document.onclick  = function(e){
    console.log(e.metaKey);
 }

 </script>
</html> 

11. relatedTarget

返回与事件的目标节点相关的节点

提示
  • 对于 mouseover 事件来说,该属性是鼠标指针移到目标节点上时所离开的那个节点。
  • 对于 mouseout 事件来说,该属性是离开目标时,鼠标指针进入的节点。
  • 对于其他类型的事件来说,这个属性没有用。

event.relatedTarget

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'>
 </body>
 <script>
input.onmouseover  = function(e){
    console.log(e.relatedTarget);
 }
 input.onmouseout  = function(e){
    console.log(e.relatedTarget);
 }

 </script>
</html> 

对于以上代码来说,当鼠标从input框上,左,右边进入时显示的是body标签,从下边进入时显示的是根元素html。这是因为body的高度的原因。

12. screenX

返回事件发生时鼠标指针相对于屏幕的水平坐标

提示
  • 此属性只是返回事件触发点与屏幕左边(X)的距离。

event.screenX

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'>
 </body>
 <script>
input.onmouseover  = function(e){
    console.log(e.screenX);
    console.log(e.screenY);
 }

 </script>
</html> 

13. screenY

返回事件发生时鼠标指针相对于屏幕的垂直坐标

提示
  • 此属性只是返回事件触发点与屏幕顶部(Y)的距离。

event.screenY

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'>
 </body>
 <script>
input.onmouseover  = function(e){
    console.log(e.screenX);
    console.log(e.screenY);
 }

 </script>
</html> 

14. shiftKey

可返回一个布尔值,指示当事件发生时,”SHIFT” 键是否被按下并保持住。

event.shiftKey=true|false|1|0

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8"/>
 <title>zsh</title>
 <style>

 </style>
</head>
 <body>
    <input type="text" id='input'>
 </body>
 <script>
input.onmouseover  = function(e){
    alert(e.shiftKey);
 }

 </script>
</html> 

文档内容出自 W3cSchool和菜鸟教程, 如需查看更详细的有关内容 请登录 http://www.w3school.com.cn/http://www.runoob.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值