欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

event事件对象

程序员文章站 2022-07-12 16:29:23
...

概念:

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象包含着所有事件相关的信息

获取事件对象 - event:

事件对象:标准浏览器的事件对象是事件处理函数中的一个隐藏的(第一个)参数,可以通过参数获取对象

document.onmousedown = function(ev){//鼠标按下  ev:事件对象
    console.log(ev);
    // console.log(arguments[0])
}

document.onkeydown = function(ev){//键盘按下事件
    console.log(ev);
}

老版本的IE浏览器默认自带event对象,无需再次声明.

//兼容的方式获取事件对象
document.onmousedown = function(ev){
    var ev = ev || window.event;//兼容方式获取事件对象。
}

事件类型:

1、获取焦点、失去焦点

var oInp = document.querySelector('input');
oInp.onfocus = function() {   
    console.log('获取焦点');
}

oInp.onblur = function() {
    console.log('失去焦点');
}

2、鼠标左键、右键的点击

//onclick:当用户用鼠标左键单击对象时触发
document.onclick = function() {
    console.log('鼠标左键单击了');
}

//oncontextmenu:当用户使用鼠标右键单击客户区打开上下文菜单时触发
document.oncontextmenu = function() {
    console.log('鼠标右键单击了');
}

3、键盘的按下、弹起

// onkeydown:但用户按下键盘按键时触发
document.onkeydown = function() {
    console.log('键盘按下了');
}

// onkeyup:当用户释放键盘按键时触发
document.onkeyup = function() {
    console.log('键盘按键释放了');
}

4、onload:在浏览器完成对象的装载后立即触发

window.onload = function() {
    console.log('浏览器完成了对象装载');
}

5、onmousedown:当用户用任何鼠标按钮单击对象时触发

document.onmousedown = function() {
    console.log('使用鼠标单击了对象');
}

6、onmouseup:当用户在鼠标位于对象之上时释放鼠标按钮时触发

document.onmouseup = function() {
    console.log('鼠标在对象上释放了');
}

7、onmousemove:鼠标在某个区域内进行移动

document.onmousemove = function() {
    console.log('鼠标在此区域内移动');
}

8、onmouseover:当用户将鼠标指针移动到对象内时触发

document.onmouseover = function() {
    console.log('鼠标指针移动到对象内时触发');
}

9、onmouseout:当用户将鼠标指针移出对象边界时触发

document.onmouseout = function() {
    console.log('鼠标指针移出对象边界时触发');
}

10、onresize:当对象的大小将要改变时触发

window.onresize = function() {
    console.log('对象的大小将要改变时触发');
}

11、onscroll:当用户滚动对象的滚动条时触发

window.onscroll = function() {
    console.log('用户滚动对象的滚动条时触发');
}

event属性:

    鼠标

1.标准浏览器的鼠标事件,会有一个button属性,它是一个数字,代表鼠标按键。

        0代表鼠标按下了左键  1代表按下了滚轮    2代表按下了右键

document.onmousedown = function(e) {
    var e = e || window.event;
    alert(e.button);
}

2.which属性:获取鼠标的按键和键盘的键码(键盘按键Unicode编码),低版本浏览器不支持

        1代表鼠标按下了左键  2代表按下了滚轮    3代表按下了右键

                enter -> 13        space -> 32       

document.onmousedown = function(e) {
    var e = e || window.event;
    alert(e.which);
}

document.onkeydown = function(e) {
    var e = e || window.event;
    alert(e.which);
}

3.鼠标事件中获取鼠标的位置属性

        clientX,clientY:鼠标相对于可视区的位置

document.onmousemove = function(e) {
    var e = e || window.event;
    console.log(e.clientX, e.clientY);
}

        pageX,pageY:鼠标相对于文档的位置

document.onmousemove = function(e) {
    var e = e || window.event;
    console.log(e.pageX, e.pageY);
}

        offsetX,offsetY:鼠标相对于操作元素(鼠标位置)到元素边缘(左上)的位置;鼠标相对于当前操作元素左上角的距离,和定位没有关系

document.querySelector('.box').onmousemove = function(e) {
    var e = e || window.event;
    console.log(e.offsetX, e.offsetY);
}

        screenX,screenY :鼠标相对于屏幕的位置

document.onmousemove = function(e) {
    var e = e || window.event;
    console.log(e.screenX, e.screenY);
}

键盘

1.键盘事件的类型

        onkeydown + onkeyup = onpress

2.which具有兼容问题,低版本IE浏览器不支持。

//keyCode:keyCode和which 获取键盘上按键对应的unicode编码

document.onkeydown = function(ev){
    var ev = ev||event;
    alert(ev.keyCode);
}

//案例:WASD控制一个盒子移动

var oBox = document.querySelector('.box');
    document.onkeydown = function(ev){
        var ev = ev||event;
        if(ev.keyCode === 65){
            oBox.style.left = oBox.offsetLeft - 5 +'px';
        }
        if(ev.keyCode === 68){
            oBox.style.left = oBox.offsetLeft + 5 +'px';
        }
        if(ev.keyCode === 83){
            oBox.style.top = oBox.offsetTop + 5 +'px';
        }
        if(ev.keyCode === 87){
            oBox.style.top = oBox.offsetTop - 5 +'px';
        }
    }

3.常见的键码

        组合键event.ctrlKey、event.altKey、event.shiftKey 分别代表ctrl alt shift键


浏览器的默认行为:

1.javascript中的默认行为是指javascript中事件本身具有的属性,如<a>标签可以跳转,文本框可输入文字、字母、图片路径等,右键浏览器会出现菜单等行为便被称为浏览器的默认行为。

2.阻止浏览器的默认行为

        ev.preventDefault(); 标准浏览器阻止默认事件,DOM事件使用此方法取消默认事件。

        ev.returnValue = false; 非标准浏览器(IE8)阻止默认事件


事件流:

1.事件流描述的是从页面中接收事件的顺序。

2.事件流包括三个阶段:事件捕获阶段、目标阶段(当前操作的元素)和事件冒泡阶段。

3.两大浏览器运营商:微软(microsoft)  网景(netscape)

        微软(microsoft) - 冒泡

        网景(netscape) 捕获

4.IE的事件流叫做事件冒泡,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点,一直到文档document 

event事件对象