美文网首页
事件对象

事件对象

作者: 你怀中的猫 | 来源:发表于2022-05-04 19:00 被阅读0次

    事件对象 event(e)

    • 当DOM操作触发某个事件时,会产生事件对象event
      当事件被触发时产生,事件执行完毕时销毁
    • 事件对象 event 首先它是一个对象
      包含着跟事件有关的所有信息
      包括触发事件的DOM以及每种事件的一些特征
    • 例如:鼠标事件 event 包含鼠标的坐标等
      键盘事件 event 包含按下的键的信息
    • 所有的事件 都必须被某个dom对象(dom元素)触发
    • ele.onclick
      当被点击标签的时候触发onclick事件
    • window.onscroll
      窗口事件当窗口的滚动条发生偏移是触发 onscroll事件
      事件对象是 event
      执行对象是 window
    • 所有的事件不管是鼠标 键盘 窗口等,他们的事件对象都是event
     //事件类型
        //通过e.type获取被触发的事件类型
        //点击事件
        window.onclick = function(event){
            //事件对象的兼容性写法
            var e = event || window.event;
            console.log(e.type);  //PointerEvent
        }
        //鼠标移动事件
        window.onmousemove = function(event){
            //事件对象的兼容性写法
            var e = event || window.event;
            console.log(e.type); //MouseEvent
        }
        //滚动条事件
        window.onscroll = function(event){
            //事件对象的兼容性写法
            var e = event || window.event;
            console.log(e.type);  //Event
        }
    
        //不同的事件其事件对象有不同的数据
        //但是所有的事件对象都叫event
    

    鼠标点击事件

    • onclick 单击事件
    • ondblclick 双击事件
      当给同一个盒子,同时绑定单击和双击事件时,触发双击事件必定会触发两次单击事件
    • oncontextmenu 右键事件
      鼠标右键事件是有个默认功能的事件,它可以打开右键菜单
    • onmousedown 鼠标按下事件
      鼠标一旦按下就会触发,而onclick是鼠标按下再松开的时候才触发
    • onmouseup 鼠标松开事件
      当鼠标按下的时候不会触发,松开的时候才会触发

    鼠标移动事件

    • onmouseover 鼠标移入
    • onmouseout 鼠标移出
    • onmouseenter 鼠标移入
    • onmouseleave 鼠标移出

    两者不同点:

    • 第一种(onmouseover、onmuseout)会触发事件冒泡
    • 第二种(onmouseenter、onmouseleave)不会触发事件冒泡
    • 给父级绑定了事件,子级没有绑定事件,但是当鼠标移入子级时,会触发父级的事件 ,这种情况叫做事件冒泡

    鼠标坐标

    • 鼠标的坐标在鼠标事件的事件对象中保存
    • 所以要获取鼠标坐标,一般都是通过事件对象 event获取
    • 所有的鼠标事件都可以通过事件对象来获取鼠标的坐标
    • 但是通常我们在鼠标移动事件获取和使用鼠标坐标

    获取鼠标坐标的几种方式

    • 1、获取鼠标在窗口可视区中的坐标
      e.clientX / e,clientY
    • 2、获取鼠标在目标元素中的坐标
      e.offsetX / e.offsetY
    • 3、获取鼠标在文档中的坐标
      e.pageX / e.pageY
    • 4、获取鼠标在屏幕上的坐标
      e.screenX / e.screenY

    键盘事件

    键盘事件类型

    • 键盘按下 : onkeydown
    • 键盘抬起 : onkeyup
    document.onkeydown = function(event){
            var e = event || window.event;
            console.log("键盘按下");
            //获取按下键的键码
            var code = e.keyCode;
            console.log(code);
            /*
                字母上面的数字 : 48 ~ 57
                字母 a ~ z :  65 ~ 90
                删除键 : 8
                回车键 : 13
                shift键 : 16
                左上右下 : 37 ~ 40
                w a s d {
                    w : 87
                    a : 65
                    s : 83
                    d : 68
                }
                空格键 : 32
                ctrl  : 17
                alt : 18
                Esc : 27
            */
        }
    

    表单事件

    • onfocus 表单元素获取焦点时触发
    • onblur 表单元素失去焦点时触发
    • oninput 表单元素输入时触发
    • onchange 表单元素里面的值发生改变且在失去焦点时触发

    image对象

    • 1、在html中创建img标签,用js获取
    • 2、直接使用js创建img
    • 3、使用Image构造函数来创建img
    var img1 = document.createElement('img');
    
    var img2 = new Image();
    //设置宽高(不加单位)
    img2.width = '400';
    img2.height = '700';
    img2.src = 'https://tse1-mm.cn.bing.net/th/id/OIP-C.Zxtf2X2EddV-g7hKyBhilAHaQB?pid=ImgDet&rs=1';
    
    //将img添加到fbox中
    
    fbox.appendChild(img2);
    

    图片预加载

    页面中的缓存机制

    • 当图片第一次打开的时候浏览器会将图片保存在本地中,则就将缓存
    • 第二次打开的时候浏览器会将图片的src在缓存的图片中去找
    • 如果找到就从本地打开,不会再发网络请求
    • 如果找不到就发网络请求 缓存图片

    图片加载原理

    • 图片在将src写好之后开始加载,而不是渲染时才开始加载

    图片预加载原理

    • 根据缓存和图片加载的原理。因为图片在设置src的时候就可以进行请求
    • 并将保存好的图片保存到本地中(缓存)
      这个时候没有将图片渲染到页面中
      图片就不会出现,但是可以正常缓存
    • 等需要将图片渲染到页面上时,图片早就已经缓存好
      加载就不会卡顿

    图片的懒加载

    //懒加载的封装
    
      //封装懒加载
        function lazyLoad(options){
            //先生成一个在页面展示的img
            var img1 = new Image();
            //设置占位src
            img1.src = options.jSrc;
            img1.width = options.w;
            img1.height = options.h;
            //将img1渲染到页面中
            options.fDiv.appendChild(img1);
    
            //在生成一个img,用来加载真实的图片
            var img2 = new Image();
            img2.src = options.zSrc;
            img2.onload = function(){
                img1.src = this.src;
            }
        }
    
    
     <div id="fbox"></div>
     //调用懒加载方法
        lazyLoad({
            jSrc : "./img/loding.gif",//占位图片
            //真实图片
            zSrc : "https://tse4-mm.cn.bing.net/th/id/OIP-C.TyOpfduNwosmeMHNb4ZQ8QHaEo?pid=ImgDet&rs=1",
            fDiv : fbox,
            w : 800,
            h : 600
        });
    

    相关文章

      网友评论

          本文标题:事件对象

          本文链接:https://www.haomeiwen.com/subject/wuabyrtx.html