目录
在JavaScript中,事件对象是与事件相关的对象,它包含了与事件触发相关的信息。事件对象提供了访问事件的属性和方法,以便在事件处理程序中对事件进行操作和响应。
事件原对象是指触发事件的对象,也称为事件的目标对象或事件的源对象。它是触发事件的元素或节点,可以是文档中的任何元素,如按钮、输入框、链接等。事件原对象是事件的直接触发者,通过它可以获取事件发生的具体位置、状态和其他相关信息。
在JavaScript中,当事件被触发时,会自动创建一个事件对象,并将其作为参数传递给事件处理函数。通过事件对象,我们可以获取事件的类型、触发元素、鼠标位置、键盘按键等信息。通过事件原对象,我们可以进一步操作触发事件的元素,例如修改元素的样式、获取或设置元素的属性值等。
了解事件对象和事件原对象的概念对于前端开发非常重要。它们使我们能够在事件发生时获取事件的相关信息,并根据需要对页面进行相应的操作和交互。通过使用事件对象和事件原对象,我们可以实现各种交互效果,例如表单验证、按钮点击、鼠标悬停等。
每一个事件都具有一个事件对象,可以在绑定事件的执行函数当中获取该事件对象,事件对象是一个名为 event的全局变量,通过 event 就可以获取当前事件的事件对象。
一些低版本浏览器中,没有event变量,可以通过 参数代替
事件对象的常见用处
1.获取事件源对象
2.获取该触发点的坐标
3.结合鼠标和键盘准确的知道鼠标的按键和键盘的按键具体是哪一个
- let wp = document.querySelector('.wp')
- wp.onmouseenter = function(){ //鼠标移入事件
- console.log(event);
- }
- //传入参数,表示事件对象,参数是形参,名字可以任意命名,一般为ev
- wp.onmouseenter = function(ev){ //鼠标移入事件
- // console.log(event);
- console.log(ev,'参数');
- }
- //火狐的低版本中没有event变量,因此可以通过以下方式设置兼容写法
- wp.onmouseleave = function(ev){
- let e = event || ev;
- console.log(e,'火狐兼容');
- }

事件原对象,指的是 真正触发该事件的元素对象
获取事件源对象的方式
1.标准浏览器中 通常使用 event.target 获取
2.ie中通常使用 event.srcElement 获取
谷歌都支持
- let li = document.querySelectorAll('li')
- for (let i = 0; i < li.length; i++) {
- li[i].onclick = function(){
- //获取事件源对象
- console.log(event.srcElement);
- event.target.style = `
- font-size:40px;
- color:#f00;
- `
- event.srcElement.style.background = 'pink'
- // li[i].style.fontSize = '40px'
- // li[i].style.color = '#f00'
- }
- }
clientX clientY
他们的兼容性很好,所有浏览器都支持
clientX 当前触发点距离浏览器左边的距离
clientY 当前触发点距离浏览器上边的距离
screenX screenY
他们的兼容性很好,所有浏览器都支持
screenX 当前触发点距离屏幕左边的距离
screenY 当前触发点距离屏幕上边的距离
pageX pageY
ie8 及其以上浏览器支持,所有非ie浏览器支持
pageX 当前触发点距离页面左边的距离
pageY 当前触发点距离页面上边的距离
如果在ie8及其以下,还要获取当前点击的最高点距离页面顶部的距离,可以使用兼容写法
ev.clientY + (document.doumentElement.scrolltop||document.body.scrolltop)
x,y 他们的值和 clientX clientY 一致
offsetX offsetY 他们的值和 pageX pageY 一致
layerX layerY 他们的值和 pageX pageY 一致
以上三个属性浏览器的兼容性不好,因此不常用
- document.onclick = function(ev){
- ev = event||ev;
- console.log('浏览器',ev.clientX,ev.clientY);
-
- console.log('屏幕',ev.screenX,ev.screenY);
-
- console.log('页面',ev.pageX,ev.pageY);
-
- console.log(ev);
- }