本篇内容介绍了“javascript DOM常用事件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
本篇内容介绍了“javascript DOM常用事件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
click 单击
dblclick 双击
contextmenu 右击
mouseover 鼠标悬停在元素上, 建议用 mouseenter 代替
mouseout 鼠标离开元素,建议用 mouseleave 代替
mouseenter 鼠标悬停在元素上
mouseleave 鼠标离开元素
mousedown 鼠标按键按下
mouseup 鼠标按键抬起
mousemove 鼠标移动
keydown 键盘按键按下
keyup 键盘按键抬起
keypress 键盘按键按下,用于可输入字符按键
1. 哪些元素可以监听键盘事件?
① document
② 可以获取焦点的元素(表单控件,尤其是可输入的元素)
2. keydown 和 keypress 的区别?
① keydown 所有的按键按下都可以触发,无法区分大小写按键。
② keypress 只有可输入字符按键按下才可以触发,可以区分大小写按键。
3. 如何获取按下的是哪个按键?
使用 event 对象中的属性:
evnet.keyCode 获取按键对应的 ascii 值
event.which 同 keyCode
event.key 获取按键的字符值。
load 页面中所有的一切加载完毕就会触发,可以监听到window上或者body元素
DOMContentLoaded 页面中所有的元素加载完毕就会触发,可以监听在window或者document上, 只能使用 addEventListener 监听事件
beforeunload 当关闭网页的时候触发
load 事件与 DOMContentLoaded 事件的区别:
① load 事件是页面中所有的一切加载完毕才能触发,包括元素以及外部资源。
② DOMContentLoaded 事件是页面中所有的元素加载完毕就可以触发,不包括外部资源。
submit 当表单提交的时候触发,该事件监听到fORM元素
reset 当表单重置的时候触发,该事件监听到form元素
focus 当表单控件获取焦点的时候触发
blur 当表控件单失去焦点的时候触发
select 输入框或文本域中的内容被选中
change 对于输入框,内容改变且失去焦点才会触发;适合用于select
load 图片文件下载完毕
error 图片加载失败
resize 监听到 window上,视口大小发生改变
scroll 监听到window或者是具有滚动体的元素,页面或元素中的内容发生滚动就触发。
给事件的回调函数设置第一个形参,就可以获取 event 对象。
不同类型的事件获取的 Event 对象类型也不同。
offsetX / offsetY 获取鼠标在目标元素上的坐标位置
clientX / clientY 获取鼠标在视口上的坐标位置
pageX / pageY 获取鼠标在页面上的坐标位置
screenX / screenY 获取鼠标在屏幕上的坐标位置
button 获取按的是哪个鼠标按键, 0:左键; 1:中间键; 2:右键
keyCode 获取按键对应的编码值
which 同 keyCode
key 获取按键对应的字符值
type 获取事件名
timeStamp 获取触发事件时距离打开页面时的毫秒数
target 获取目标元素
stopPropagation() 阻止事件冒泡
preventDefault() 阻止浏览器默认行为
在事件的回调函数中执行 event.stopPropagation()
,就可以阻止冒泡。
超链接点击跳转
表单的提交和重置
右键弹出系统菜单
等...
在事件的回调函数中调用 event.preventDefault()
即可阻止默认行为。
注意: 如果使用第二种方式监听事件,在回调函数中
return false
同样可以阻止默认行为。
事件监听到祖先元素上,判断目标元素,如果目标元素满足条件,就执行相关操作。
事件委托的优势:
对于给大量的元素监听相同的事件,使用事件委托比遍历挨个监听效率更好。
利用事件委托可以让新增的元素也可以响应事件。
“JavaScript DOM常用事件实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: JavaScript DOM常用事件实例分析
本文链接: https://lsjlt.com/news/98495.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0