js-DOM03-事件

news/2024/11/28 23:55:18/

事件(Event)
    - 事件对象
    - 当响应函数被调用时,浏览器每次都会将一个事件对象作为实参传递进响应函数中,
        这个事件对象中封装了当前事件的相关信息,比如:鼠标的坐标,键盘的按键,鼠标的按键,滚轮的方向。。
    - 可以在响应函数中定义一个形参,来使用事件对象,但是在IE8以下浏览器中事件对象没有做完实参传递,而是作为window对象的属性保存
        - 例子:
            元素.事件 = function(event){
                event = event || window.event;
                
            };
            
            元素.事件 = function(e){
                e = e || event;
                
            };
            
     * clientX和clientY
     *     用于获取鼠标在当前的可见窗口的坐标
     * div的偏移量,是相对于整个页面的
     * 
     * pageX和pageY可以获取鼠标相对于当前页面的坐标
     *     但是这个两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用
            
    - 事件的冒泡(Bubble)
    - 事件的冒泡指的是事件向上传导,当后代元素上的事件被触发时,将会导致其祖先元素上的同类事件也会触发。
    - 事件的冒泡大部分情况下都是有益的,如果需要取消冒泡,则需要使用事件对象来取消
    - 可以将事件对象的cancelBubble设置为true,即可取消冒泡
        - 例子:
                元素.事件 = function(event){
                    event = event || window.event;
                    event.cancelBubble = true;
                };
    -  事件的委派
    -  指将事件统一绑定给元素的共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素
               从而通过祖先元素的响应函数来处理事件。
    -  事件委派是利用了冒泡,通过委派可以减少事件绑定的次数,提高程序的性能
            
    - 事件绑定的三种方式
    - 事件绑定的方式一:
            * 使用 对象.事件 = 函数 的形式绑定响应函数,
            * 它只能同时为一个元素的一个事件绑定一个响应函数,
            * 不能绑定多个,如果绑定了多个,则后边会覆盖掉前边的
        -例子:
            元素对象.onclick = function(){
                alert(1);
            }
    - 事件绑定的方式二:
         * addEventListener()
         *     - 通过这个方法也可以为元素绑定响应函数
         *  - 参数:
         *         1.事件的字符串,不要on
         *         2.回调函数,当事件触发时该函数会被调用
         *         3.是否在捕获阶段触发事件,需要一个布尔值,一般都传false
         * 
         * 使用addEventListener()可以同时为一个元素的相同事件同时绑定多个响应函数,
         *     这样当事件被触发时,响应函数将会按照函数的绑定顺序执行
         * 
         * 这个方法不支持IE8及以下的浏览器

        -例子:
            元素对象.addEventListener("click",function(){
                alert(3);
            },false);
            
    - 事件绑定方式三:
        
         * attachEvent()
         *     - 在IE8中可以使用attachEvent()来绑定事件
         *  - 参数:
         *         1.事件的字符串,要on
         *         2.回调函数
         * 
         *  - 这个方法也可以同时为一个事件绑定多个处理函数,
         *         不同的是它是后绑定先执行,执行顺序和addEventListener()相反

        - 例子:
            元素对象.attachEvent("onclick",function(){
                alert(3);
            });
    - 方式二与方式三的区别:
         * addEventListener()中的this,是绑定事件的对象
         * attachEvent()中的this,是window
    
    - 事件的传播    
        * 事件的传播
        *     - 关于事件的传播网景公司和微软公司有不同的理解
        *     - 微软公司认为事件应该是由内向外传播,也就是当事件触发时,应该先触发当前元素上的事件,
        *         然后再向当前元素的祖先元素上传播,也就说事件应该在冒泡阶段执行。
        *  - 网景公司认为事件应该是由外向内传播的,也就是当前事件触发时,应该先触发当前元素的最外层的祖先元素的事件,
        *         然后在向内传播给后代元素
        *     - W3C综合了两个公司的方案,将事件传播分成了三个阶段
        *         1.捕获阶段
        *             - 在捕获阶段时从最外层的祖先元素,向目标元素进行事件的捕获,但是默认此时不会触发事件
        *         2.目标阶段
        *             - 事件捕获到目标元素,捕获结束开始在目标元素上触发事件
        *         3.冒泡阶段
        *             - 事件从目标元素向他的祖先元素传递,依次触发祖先元素上的事件
        * 
        *         - 如果希望在捕获阶段就触发事件,可以将addEventListener()的第三个参数设置为true
        *             一般情况下我们不会希望在捕获阶段触发事件,所以这个参数一般都是false
        * 
        *     - IE8及以下的浏览器中没有捕获阶段


http://www.ppmy.cn/news/30387.html

相关文章

C语言 猜名次、猜凶手、杨辉三角题目详解

猜名次题目:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二&#xff…

C语言练习 | 初学者经典练习汇(2)

目录 1、编写一个程序从1到100中,所有出现9的个数 2、分数求和 3、10个整形数字中选出最大值 4、打印9*9的乘法口诀 5、字符串逆序 6、计算一个数的每位之和(递归实现) 7、递归实现n的K次方 8、写个冒泡排序,把一个整形数组变成升序。 9、二进制…

【JavaEE】基于mysql与servlet自制简易的表白墙程序

文章目录1 表白墙页面构建2 Servlet 回顾3 表白墙后端程序实现3.1 我们需要做什么?3.2 实现细节4 实现结果写在最后1 表白墙页面构建 该页面由标题、文本、三个 input 输入框与一个提交按钮构成,整体比较简单,相关样式文件和页面代码会在后面…

【Vue】Vue的简单介绍与基本使用

一、什么是VueVue是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。1.构建用户界面传统方…

2022年MathorCup数学建模C题自动泊车问题解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 C题 自动泊车问题 原题再现 自动泊车是自动驾驶技术中落地最多的场景之一,自动泊车指在停车场内实现汽车的自动泊车入位过程,在停车空间有限的大城市,是一个比较实用的功能,减少了驾驶员将…

科技云报道荣膺第三届中国数字经济科技大会“年度融合报道创新奖”

2023年2月25日,2022第三届中国数字经济科技大会在江苏盐城成功举办。本次大会上,科技云报道荣膺第三届中国数字经济科技大会“年度融合报道创新奖”。 这是科技云报道继荣获全球云计算大会“云鼎奖”2013-2022十周年特别贡献奖、腾讯云开发者社区“2022年…

基于 WebSocket、Spring Boot 教你实现“QQ聊天功能”的底层简易demo

目录 前言 一、分析 1.1、qq聊天功能分析 1.2、WebSocket介绍 1.2.1、什么是消息推送呢? 1.2.2、原理解析 1.2.3、报文格式 二、简易demo 2.1、后端实现 2.1.1、引入依赖 2.1.2、继承TextWebSocketHandler 2.1.3、实现 WebSocketConfigurer 接口 2.2、…

SpringBoot With IoC,DI, AOP,自动配置

文章目录1 IoC(Inverse Of Controller)2 DI(Dependency Injection)3 AOP(面向切面编程)3.1 什么是AOP?3.2 AOP的作用?3.3 AOP的核心概念3.4 AOP常见通知类型3.5 切入点表达式4 自动配…