JavaScript:监听事件

 该方法用于向浏览器窗口注册事件监听器,当指定的事件(如单击、按键按下)被触发时,浏览器会自动调用指定的函数(回调函数)。

window.addEventListener(event, function, useCapture);

参数说明:

  • event: 要监听的事件名称,如 'click'(表示单击事件)、'keydown'(表示键盘按键按下事件)等。
  • function: 事件触发时要调用的函数(回调函数)。
  • useCapture: 可选参数,表示事件是否在捕获阶段触发,是一个布尔值,一般不用设置,默认为 false(表示在冒泡阶段触发)。

 示例:

mounted () {

    window.addEventListener('mousedown', this.handleMousedown)//监听鼠标按下

    window.addEventListener('mouseup', this.handleMouseup)//监听鼠标抬起

    window.addEventListener('keydown', this.handlekeydown)//监听键盘按下

  },

  methods: {

    // 鼠标按下事件

    handleMousedown (e) {

      if (e.button == 0) {

        console.log('鼠标左键按下')

      }

      if (e.button == 1) {

        console.log('鼠标滚动键按下')

      }

      if (e.button == 2) {

        console.log('鼠标右键按下')

      }

        console.log(e.pageX, e.pageY)// 坐标

    },

    // 鼠标抬起事件

    handleMouseup (e) {

      if (e.button == 0) {

        console.log('鼠标左键抬起')

      }

      if (e.button == 1) {

        console.log('鼠标滚动键抬起')

      }

      if (e.button == 2) {

        console.log('鼠标右键抬起')

      }

      console.log(e.pageX, e.pageY)// 坐标

    },

    // 监听键盘事件

    handlekeydown (e) {

      console.log(e)

    }

  },

常用事件:

鼠标事件

属性  描述 

click  鼠标单击某个对象时。
contextmenu  鼠标右键
dblclick  鼠标双击某个对象时。
mousedown  鼠标按钮被按下。
mouseenter  当鼠标指针移动到元素上时。
mouseleave  当鼠标指针移出元素时
mousemove 鼠标被移动。
mouseover 鼠标移到某元素之上。
mouseout 鼠标从某元素移开。
mouseup 鼠标按键被松开。

键盘事件

keydown 某个键盘按键被按下。
keypress 某个键盘按键被按下(与上一个区别就是不识别功能键,比如ctrl 箭头 tab等等)。
keyup 某个键盘按键被松开。
执行顺序:keydown ----keypress ----keyup
键盘事件里的keyCode属性可以得到相应键的ASCII码值

框架/对象(Frame/Object)事件

abort 图像的加载被中断。 ( )
beforeunload 该事件在即将离开页面(刷新或关闭)时触发
error 在加载文档或图像时发生错误。 ( , 和 )
hashchange 该事件在当前 URL 的锚部分发生修改时触发。
load 一张页面或一幅图像完成加载。
pageshow 该事件在用户访问页面时触发
pagehide 该事件在用户离开当前网页跳转到另外一个页面时触发
resize 窗口或框架被重新调整大小。
scroll 当文档被滚动时发生的事件。
unload 用户退出页面。

表单事件

blur 元素失去焦点时触发
change 该事件在表单元素的内容改变时触发( , , , 和 )
focus 元素获取焦点时触发
focusin 元素即将获取焦点是触发
focusout 元素即将失去焦点是触发
input 元素获取用户输入是触发
reset 表单重置时触发
search 用户向搜索域输入文本时触发

剪贴板事件

copy 该事件在用户拷贝元素内容时触发
cut 该事件在用户剪切元素内容时触发
paste 该事件在用户粘贴元素内容时触发

打印事件

afterprint 该事件在页面已经开始打印,或者打印窗口已经关闭时触发
beforeprint 该事件在页面即将开始打印时触发

拖动事件

drag 该事件在元素正在拖动时触发
dragend 该事件在用户完成元素的拖动时触发
dragenter 该事件在拖动的元素进入放置目标时触发
dragleave 该事件在拖动元素离开放置目标时触发
dragover 该事件在拖动元素在放置目标上时触发
dragstart 该事件在用户开始拖动元素时触发
drop 该事件在拖动元素放置在目标区域时触发

多媒体(Media)事件

abort 事件在视频/音频(audio/video)终止加载时触发。
canplay 事件在用户可以开始播放视频/音频(audio/video)时触发。
canplaythrough 事件在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。
durationchange 事件在视频/音频(audio/video)的时长发生变化时触发。
emptied The event occurs when the current playlist is empty
ended 事件在视频/音频(audio/video)播放结束时触发。
error 事件在视频/音频(audio/video)数据加载期间发生错误时触发。
loadeddata 事件在浏览器加载视频/音频(audio/video)当前帧时触发触发。
loadedmetadata 事件在指定视频/音频(audio/video)的元数据加载后触发。
loadstart 事件在浏览器开始寻找指定视频/音频(audio/video)触发。
pause 事件在视频/音频(audio/video)暂停时触发。
play 事件在视频/音频(audio/video)开始播放时触发。
playing 事件在视频/音频(audio/video)暂停或者在缓冲后准备重新开始播放时触发。
progress 事件在浏览器下载指定的视频/音频(audio/video)时触发。
ratechange 事件在视频/音频(audio/video)的播放速度发送改变时触发。
seeked 事件在用户重新定位视频/音频(audio/video)的播放位置后触发。
seeking 事件在用户开始重新定位视频/音频(audio/video)时触发。
stalled 事件在浏览器获取媒体数据,但媒体数据不可用时触发。
suspend 事件在浏览器读取媒体数据中止时触发。
timeupdate 事件在当前的播放位置发送改变时触发。
volumechange 事件在音量发生改变时触发。
waiting 事件在视频由于要播放下一帧而需要缓冲时触发。

动画事件

animationend 该事件在 CSS 动画结束播放时触发
animationiteration 该事件在 CSS 动画重复播放时触发
animationstart 该事件在 CSS 动画开始播放时触发

过渡事件

transitionend 该事件在 CSS 完成过渡后触发。

其他事件

message 该事件通过或者从对象(WebSocket, Web Worker, Event Source 或者子 frame 或父窗口)接收到消息时触发
online 该事件在浏览器开始在线工作时触发。
offline 该事件在浏览器开始离线工作时触发。
popstate 该事件在窗口的浏览历史(history 对象)发生改变时触发。 event occurs when the window’s history changes
show 该事件当元素在上下文菜单显示时触发
storage 该事件在 Web Storage(HTML 5 Web 存储)更新时触发
toggle 该事件在用户打开或关闭 元素时触发
wheel 该事件在鼠标滚轮在元素上下滚动时触发

总结来说,window.addEventListener() 是一种非常强大的事件监听函数,通常用于添加多个事件监听器和稳定性。

与 onclick 属性相比,在添加多个事件监听器时,window.addEventListener() 更加强大和灵活。window.addEventListener() 没有额外的依赖,因此可以更快,更可靠地添加事件监听器。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用JavaScript实现的简单事件监听器 `Event` 类: ```javascript class { constructor() { this.eventMap = Map(); } addEventListener(eventName, listener) { if (!this.eventMap.has(eventName)) this.eventMap.set(eventName, []); } this.eventMap.get(eventName).push(listener); } triggerEvent(eventName, ...args) { const listeners = this.eventMap.get(eventName); if (listeners) { listeners.forEach((listener) => listener(...args)); } } removeEventListener(eventName, listener) { const listeners = this.eventMap.get(eventName); if (listeners) { const index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); } } } } ``` 在这个示例中,我们定义了一个 `Event` 类,它包含了三个方法: - `addEventListener(eventName, listener)`:用于向特定的事件名称添加监听器。如果事件名称不存在,则创建一个新的事件数组,并将监听器添加到数组中。 - `triggerEvent(eventName, ...args)`:用于触发特定的事件,并将参数传递给该事件的所有监听器回调函数。 - `removeEventListener(eventName, listener)`:用于从特定的事件名称中移除指定的监听器。 您可以使用以下代码来测试 `Event` 类的使用: ```javascript const event = new Event(); function handleEvent1() { console.log('Event 1 is triggered'); } function handleEvent2(name) { console.log(`Event 2 is triggered by ${name}`); } event.addEventListener('event1', handleEvent1); event.addEventListener('event2', handleEvent2); event.triggerEvent('event1'); // 输出 "Event 1 is triggered" event.triggerEvent('event2', 'John'); // 输出 "Event 2 is triggered by John" event.removeEventListener('event1', handleEvent1); event.triggerEvent('event1'); // 没有输出,因为事件 1 的监听器已被移除 ``` 这是一个简单的事件监听器实现,您可以根据需求进行扩展和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值