js基础--事件

148 阅读3分钟

事件

事件三要素:事件源+事件类型+事件处理程序

事件集合

鼠标事件
事件描述
onclick点击
ondblclick双击
onmousedown按下
onmouseup抬起
onmousemove移动
onmouseover移入
onmouseout移出
onmouseenter鼠标指针移动到元素上时触发(不支持冒泡)
onmouseleave鼠标指针移出元素上时触发(不支持冒泡)
oncontextmenu右键
键盘事件
事件描述
onkeydown按下
onkeyup抬起
onkeypress按下(只能触发数字字母符号)
表单事件
事件描述
onfocus获得焦点
onblur失去焦点
onchange失去焦点并内容改变
onsubmit提交事件(form标签事件)
onreset重置事件(form标签事件)
oninput表单输入
其他事件
事件描述
onscroll滚动条事件(滚动条位置改变)
onwheel鼠标滚轮事件
onresize页面尺寸改变
onload页面加载完成之后执行该事件
DOMContentLoaded页面结构加载完成执行该事件

事件绑定方式

  • 通过标签

    <button onclick="click_fn()">click</button>
    <script>
      function click_fn(){
        console.log(this);
      }
    </script>
    
  • 通过dom对象绑定

    box是dom对象
    box.onclick=function(){}
    
    

事件监听

需要为同一个元素添加多个事件处理程序

添加事件监听:

dom对象.addEventListener("事件不加on",事件处理程序,boolean)
box.addEvenListener("click",function(){
  
},false)
  

移除事件监听

dom对象.removeEventListener("事件不加on",事件处理程序,boolean)
box.addEvenListener("click",function(){
  
},false)
// 必须移除addEventListener添加事件
box.removeEvenListener("click",function(){
  
},false)

ie8及以下兼容性:

添加事件监听:dom对象.attachEvent("事件",事件处理程序)

移除事件监听:dom对象.detachEvent("事件",事件处理程序)

事件对象

事件对象在创建中自动创建了事件对象

事件对象存储的是所有有关事件的信息

事件的对象作为事件处理程序的第一个参数

事件对象存在兼容性: e=e|| event

属性:

属性描述
e.clientX当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置
e.clientY当鼠标事件发生的时候,鼠标相对于浏览器Y轴的位置
e.offsetX当鼠标事件发生的时候,鼠标相对于事件源X轴的位置
e.offsetY当鼠标事件发生的时候,鼠标相对于事件源Y轴的位置
e.pageX当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置,包含页面横向滚动距离
e.pageY当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置,包含页面纵向滚动距离
e.wheelDelta滚动量
e.key获取当前所按键的名称
e.ctrlKey判断当前ctrl键是否按下的状态
e.shiftKey判断当前shift键是否按下的状态
e.altKey判断当前alt键是否按下的状态
e.keyCode获取当前所按键的键盘码

方法:

属性含义
e.preventDefault()阻止浏览器默认行为
e.stopPropagation()阻止事件流的传播(阻止冒泡)
e.currentTarget指向被绑定事件的元素
e.target指向事件触发的对象,当事件是处在冒泡或者捕获阶段调用的时候,指向最先触发事件的事件源
e.type返回当前所触发事件的事件名称