首页 > 其他分享 >11. 事件

11. 事件

时间:2022-12-10 09:22:04浏览次数:38  
标签:11 oTiger 对象 元素 冒泡 event 事件

事件

事件:对某个元素的某种操作

事件元素:触发事件的元素

事件类型:某种动作,单击,移入,移除

事件对象:当某个事件触发时产生的对象就是事件对象

​ 1.事件对象:(非必须)在事件操作中,事件分为两类
​ a.鼠标操作 b.键盘操作

​ 2.事件对象携带着相关事件类型的所有属性和方法

​ 3.事件对象必须得有事件才会产生

<script>
    var oTiger = document.querySelector("#tiger");
    
    document.onclick = function(){
        // 回忆offset读写的语法
        // 写:必须是带px的字符串
        oTiger.style.top = oTiger.offsetTop - 100 + "px";

        setTimeout(function(){
            oTiger.style.top = "500px";
        },2000);
    }
</script>

事件对象的兼容:

每个事件函数天生有一个参数叫event,它是事件对象,如果向修改event的名称,事件函数的第一个参数就是用来修改的

var e = evt || event;

event使用前提,必须有事件 不同的对象产生的事件不同

案例:小老虎跳一跳

坐标:

page:针对于整个页面的左顶点 常用

console.log("page",e.pageX,e.pageY);

client:针对于可视窗口的左顶点 不常用

console.log("client",e.clientX,e.clientY);

offset:针对于父元素的左顶点 常用于拖拽

 console.log("offset",e.offsetX,e.offsetY);

坐标

案例:跟随鼠标移动

<script>
    //事件元素:大白板
    //事件类型:onmousemove
    //事件对象:获取鼠标的坐标,将坐标赋值给box的left和top
    // (一个元素要在页面发生位移,本质就是在修改left和top)

    var oTiger = document.querySelector("#tiger");
    //给整个页面绑定:鼠标移动事件
    document.onmousemove = function(evt){
       //兼容的方式获取event对象
        var e = evt || event;
        // 鼠标在页面的位置 = 滚动条滚动的距离 + 可视区域的坐标。
        //注意,如果想通过 style.left 来设置属性,一定要给 box1开启绝对定位。
        oTiger.style.left = e.pageX - oTiger.offsetWidth/2 + "px";
        oTiger.style.top = e.pageY - oTiger.offsetHeight/2 + "px";
    }
</script>

DOM事件流

事件传播的三个阶段是:事件捕获、事件冒泡和目标。

  • 事件捕获阶段:事件从祖先元素往子元素查找(DOM树结构),直到捕获到事件目标 target。在这个过程中,默认情况下,事件相应的监听函数是不会被触发的。

  • 事件目标:当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。

  • 事件冒泡阶段:事件从事件目标 target 开始,从子元素往冒泡祖先元素冒泡,直到页面的最上一级标签。

事件捕获

addEventListener可以捕获事件:

   box1.addEventListener("click", function () {
        alert("捕获 box3");
    }, true);  //参数为true,代表事件在捕获阶段执行。

重点:捕获阶段,事件依次传递的顺序是:window --> document --> html--> body --> 父元素、子元素、目标元素。

事件冒泡

冒泡指的是:子元素的事件被触发时,父元素的同样的事件也会被触发。取消冒泡就是取消这种机制

注意事项:
并不是所有事件都会产生冒泡问题 onfocus onblur onl oad不会产生冒泡问题。意思是,事件不会往父元素那里传递。

检查一个元素是否会冒泡,可以通过事件的以下参数:

    event.bubbles
    //如果返回值为true,说明该事件会冒泡;反之则相反。

阻止事件冒泡

   w3c的方法: event.stopPropagation();
   IE10以下则是:event.cancelBubble = true

兼容写法

event = event || window.event;
e.stopPropagation?e.stopPropagation():e.cancelBubble = true; 

如何阻止浏览器的默认行为

  事件对象.函数名或事件对象.属性名
evt.preventDefault();

兼容写法

evt.preventDefault?evt.preventDefault():e.returnValue=false;

标签:11,oTiger,对象,元素,冒泡,event,事件
From: https://www.cnblogs.com/qianfanqf/p/16969910.html

相关文章

  • 华为机试真题 Python 实现【星际篮球争霸赛】【2022.11 Q4 新题】
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • React后台管理系统08 左侧菜单栏点击事件
    我们在Menu组件身上添加一个点击事件:对应的函数写一个回调函数:获取当前对象的e的身上的key,这里其实不难看出e就是当前点击时的menu对象,我们这里获取的是e的key,对应上面......
  • pytest + yaml 框架 -11.全局 base_url 配置
    前言一个完整的url地址由环境地址和接口地址拼接而成,环境地址是可变的,可以部署到测试环境,uat联调环境等不同的环境。不管部署到哪个环境,接口的地址是不可变的,通常需要一......
  • macOS Big Sur 11(macOS11系统)v11.7.1正式版
    全新的macOS11.0系统现已正式发布。最新系统macOS11.0被命名为“BigSur”,同时本次更新也被苹果称为macOS有史以来的最大更新。从设计开始,苹果表示macOSBigSur引入了自......
  • Gradle 教程说明 用户指南 第11章 使用 Gradle 命令行
    11.1执行多个任务每个任务都只执行一次,不管它如何被包含在build:无论是在命令行中指定,或作为一个依赖的另一个任务,或两者兼而有之。以下四个任务的定义。dist和测试都依赖......
  • Win11右键自动展开二级菜单
    1.Win11当前样式2.修改WIN+R输入regedit打开注册表,定位到HKEY_CURRENT_USER\Software\Classes\CLSID新建项,命名为{86ca1aa0-34aa-4e8b-a509-50c905bae2a2},注意带着括号......
  • JavaScript -- DOM事件总结
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • android之屏幕方向改变以及onConfigurationChanged事件
    注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。当我们的屏幕方向发生改变时,就可以触发onConfig......
  • Qt: QDropEvent拖拽事件,拖拽打开文件
             Qt,C++学习交流群:302558294(欢迎你的加入)需求:通过鼠标拖拽文本文件到应用程序,打开文本文件,读出其中的内容,显示到窗口中。效果图:主要思路:1、重......
  • Arch+Windows11双系统攻略
    Arch+Windows11双系统攻略@目录Arch+Windows11双系统攻略Arch安装打开archwiki制作archisoU盘bios更改启动项archiso换源grub安装kde安装grub美化其他软件neovimfctix......