点击事件的事件对象

发布于 2020-04-14  761 次阅读


事件对象:

触发事件的对象,相关信息
触发事件的对象,与绑定事件的对象,不一定相同
在 事件处理函数中 定义一个形参,触发事件,JavaScript程序,自动给形参赋值,存储触发事件对象的先关信息

按键事件,存储的是,按下按键的相关信息

鼠标事件,存储的是,鼠标点击移动的相关信息

事件对象的兼容语法:

低版本IE浏览器,不会自动向 形参中存储数据信息
有一个专门的属性 window.event 来存储事件对象的信息
只要不报错,一个有一个没有,使用 逻辑或 || 来兼容
如果报错,使用if判断来兼容
        e = e || window.event;

点击事件,事件对象:

1. 存储了点击时,鼠标的坐标

1.offsetX  offSetY

点击的位置,和触发事件的事件对象,左上角的坐标
触发事件的标签是谁,就是到谁左上角的坐标

2.clientX  clientY

距离视窗窗口,左上角的坐标

3.pageX    pageY

距离html文档,左上角的坐标
平时两个数据是完全相同的,如果页面滚动了,两个数据不同

如果是: 鼠标点击事件,使用  offsetX  offSetY 更简单

如果是: 鼠标拖拽事件,没有页面滚动,使用 client 和 page都可以

如果有页面滚动,使用 pageX   pageY

        document.onclick = function(e){
            e = e || window.event;
            console.log(e);
            console.log(e.offsetY);  //和document左上角的位置
            console.log(e.clientY);  //和可见页面左上角的位置
            console.log(e.pageY);  //和整个页面左上角的位置
        }

2.存储了点击时,点击的标签对象

点击事件,将事件 绑定给我的标签对象成为事件源
触发事件的标签对象是 事件对象
往往不是相同的标签对象

e.target 获取的 就是跟我们直接获取标签对象,结果是完全相同的

多有对于标签对象的操作, 都可以直接对 e.target 进行
可以获取 id className 内容 属性...
通过不同的 e.target 信息,可以判断,点击的是 不同的 标签/事件对象
.tagName  存储的是 标签对象名称, 是 大写 英文字母

判断方法有很多,只要不冲突,只要能判断正确,都可以使用

htmlcssjs
        <div id="div">我是div
            <p>我是p标签</p>
            <span>我是span标签</span>
        </div>
随便写点
        var oDiv = document.getElementById('div');
        oDiv.onclick = function(e){
            e = e || window.event;
            console.log(e)
            // 根据点击不同的标签,执行不同的代码程序
            if(e.target.tagName === 'SPAN' ){
                console.log('点击的是span标签');
            }else if(e.target.tagName === 'P' ){
                console.log('点击的是P标签');
            }else if(e.target.tagName === 'DIV' ){
                console.log('点击的是div标签');
            }
        }

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。