Logo

郎哥编程

鼠标和键盘事件

2020-12-08 162

鼠标和键盘是用户与程序的主要交互设备,DOM对象定义了鼠标和键盘事件,当用户在DOM对象区域内进行鼠标操作或按下键盘操作时,DOM对象会触发鼠标和键盘事件。

鼠标事件

常用鼠标事件如下表所示:

022.png

备注(1)

onclick事件在用户用鼠标单击DOM对象时触发,事件绑定JS处理函数参见“JS如何监听事件”一节。

备注(2)

onmousemove事件在鼠标移动时触发该事件,若要监听浏览器窗口鼠标移动事件需要使用Window对象监听,其它对象限制于在对象区域内监听。

onmousemove事件处理函数会传入DOM Event对象,该对象表示事件的状态,例如触发事件的对象、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

在onmousemove事件处理函数中,可以利用Event对象获取鼠标在窗口的位置。

案例8:onmousemove事件网页代码(案例代码见unit2\case8.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  window.onmousemove =  function(event) {
    var location = "x:" + event.clientX + "  y:" + event.clientY
    document.getElementById("id_location").value = location;
   }
   
 
</script>
</head>
<body>
  <h3>JavaScript开发案例</h3>
  <p>鼠标位置:<input type="text" id="id_location" value=""/></p>
</body>
<html>

案例代码onmousemove事件处理函数传入的参数event就是Event对象,该对象两个属性clientX和clientY,分别表示鼠标在窗口的x位置和y位置。

备注(3)

onmouseenter事件和onmouseleave是相对事件,当鼠标进入DOM对象区域内时触发onmouseenter事件,当鼠标离开DOM对象区域内时触发onmouseleave事件。

案例9:onmouseenter事件网页代码(案例代码见unit2\case9.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  function fun_enter() {
    alert("鼠标进入");
  }
            
  function fun_leave() {
    alert("鼠标离开");
  }
     
</script>
<style>
  .testdiv{
    border: 1px solid #000000;
    width:  300px;
    height: 100px;
    overflow: scroll;
    margin-top:100px;
             }
</style>
</head>
<body>
   <h3>JavaScript开发案例</h3>
  <div onmouseenter="fun_enter()" onmouseleave="fun_leave()">
   不以物喜,不以己悲。居庙堂之高则忧其民,处江湖之远则忧其君。
   是进亦忧,退亦忧。然则何时而乐耶?
   其必曰:先天下之忧而忧,后天下之乐而乐欤!
 </div>
</body>
<html>

备注(4)

onmouseover和onmouseout事件类似于onmouseenter事件和onmouseleave事件。

两对事件的相同点是鼠标经过对象自身都会触发事件。

不同点:

onmouseenter和onmouseleave事件:鼠标经过自身触发事件,经过其子元素时不触发该事件。

onmouseover和onmouseout事件:鼠标经过自身触发事件,经过其子元素时也触发该事件。

备注(5)

onmousedown事件在用户按下鼠标键时被触发,若在事件处理函数中需要判断按下鼠标哪个键,需要在处理函数中传入Event对象。

Event对象的button属性表示按键状态,值为0表示左键被按下,值为1表示中间键被按下,值为2表示右键被按下。

案例10:onmousedown事件网页代码(案例代码见unit2\case10.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  window.onmousedown =  function(event) {
   var location
   // 按下鼠标左键
   if(event.button==0)
    location = "按下左键"
    // 按下鼠标中间键
   else if(event.button==1)
     location = "按下中间键"
   // 按下鼠标右键
   else if(event.button==2)
     location = "按下右键"
     document.getElementById("id_location").value = location;
   }
</script>
</head>
<body>
  <h3>JavaScript开发案例</h3>
  <p>鼠标按键:<input type="text" id="id_location" value=""/></p>
</body>
<html>

键盘事件

常用键盘事件如下表所示:

023.png

备注(1)

onkeydown事件在用户按下键盘的某个按键时被触发,若在事件处理函数中需要判断按下键盘的哪个键,需要在处理函数中传入Event对象。

Event对象的keyCode属性表示键盘的ASCII编码,通过键盘的ASCII编码可以识别那个键被按下。

案例11:onkeydown事件网页代码(案例代码见unit2\case11.html):

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
  window.onkeydown = function(event) {
    var key = event.keyCode
    document.getElementById("id_location").value = key;
  }
     

</script>
</head>
<body>
   <h3>JavaScript开发案例</h3>
   <p>按键ASCII码:<input type="text" id="id_location" value=""/></p>
</body>
<html>


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论