事件相关内容

1、事件

  (1)事件源:触发事件的源头

  (2)事件类型:什么行为

  (3)事件处理函数:触发行为时要做什么事,触发事件源的对应的事件类型时,直接被执行的函数

  (4)事件对象:记录事件发生的所有信息

2、事件类型

  (1)鼠标类

    1)onclick:点击

    2)ondblclick:双击

    3)onmousedown:按下

    4)onmouseup:抬起

    5)onmouseover|onmouseenter:进入

    6)onmouseout|onmouseleave:离开

    7)onmousemove:移动

    8)oncontextmenu:右键单击

    9)onwheel:滚轮滚动

  (2)键盘类

    Tip:键盘事件只能加给具有焦点的元素或document

    1)onkeydown:按下任意键

    2)onkeyup:释放任意键

    3)onkeypress:抬起并按下

  (3)表单控件类 

       1)onblur:失去焦点

    2)onfocus:获取焦点

    3)oninput:输入

    4)onchange:改变

    5)onsubmit:提交(只能用于from标签)

    6)onreset:重置(只能用于from标签)

    7)onselect:选中        

  (4)页面类    

    1)onload:页面加载结束后要做什么

    2)onscroll:页面发生滚动            属性:页面滚走的距离  (可读可写)
      document.documentElement.scrollTop -->  垂直方向滚动的距离

      document.documentElement.scrollLeft -->  水平方向滚动的距离
    3)onresize:窗口或框架的大小发生改变
      属性:页面内容区的尺寸(只读)

      document.documentElement.clientWidth    -->    页面内容区的宽度

      document.docuementElement.clientHeight  -->   页面内容区的高度    

3、事件对象

  (1)特点:

    默认不显示,需要手动获取;

    只有在事件中存在,在事件还没有开始前或结束后,都无事件对象;

    事件对象只跟着事件走,类似于局部变量;

    事件结束后事件对象会被浏览器(window)回收。

  (2)事件对象的获取  (有兼容)    

  兼容方式:
      functioin fn(eve) {

          var e = eve || window.event;           

    }

  Tip:event只存在于事件中,外部不可用,使用时window不可以省掉

  (3)如何通过事件对象获取事件源

    e.target

4、鼠标事件的常用属性

  (1)检测按下的鼠标按键  -->   button  |   buttons 

  obox.onmousedown = function(eve){g
        var e = eve || window.event;
        console.log(e.button);    //左键:0  滚轮:1   右键:2
        console.log(e.buttons);   //左键:1  滚轮:4   右键:2
    }

  (2)检测鼠标相对于浏览器左上角的位置   -->   clientX  |   clientY

    

  obox.onmousedown = function(eve){
        var e = eve || window.event;
        console.log(e.clientX);    //水平方向的位置
        console.log(e.clientY);   //垂直方向的位置
    }

  (3)检测相对于html文档的左上角的位置  -->   pageX  |   pagesY

  obox.onmousedown = function(eve){
        var e = eve || window.event;
        console.log(e.pageX);    //水平方向的位置
        console.log(e.pageY);   //垂直方向的位置
    }

  Tip: 不支持IE8-

  

  (4)检测相对于显示器屏幕左上角的位置  -->  screenX  |   screenY

  obox.onmousedown = function(eve){
        var e = eve || window.event;
        console.log(e.screenX);    //水平方向的位置
        console.log(e.screenY);   //垂直方向的位置
    }

   

  (5)检测相对于事件源左上角的位置  -->   offsetX   |   offsetY

obox.onmousedown = function(eve){
        var e = eve || window.event;
        console.log(e.offsetX);    //水平方向的位置
        console.log(e.offsetY);   //垂直方向的位置
    }

5、事件冒泡

  当触发某个元素的某个事件时,它会先触发自己的对应事件,然后再依次向上触发所有父级中相同的事件,如果中间的某个父级没有相同的事件,会继续向上触发。

  由于事件冒泡的既有好也不好,当用不到的时候就需要阻止事件冒泡。

  事件冒泡的阻止(有兼容):

  function stopBubble(e) {
        if(e.stopPropagation) {
            e.stopPropagation();   //非IE
        }else {
            e.cancelBubble = true;  //IE
        }
    }

6、键盘事件及其相关属性

  事件源:document或其他具有焦点的属性

  如何知道按下的是哪个键? -->   keyCode(事件对象的属性)

  keyCode   值为十进制    也是对应的ASCII码   通过keyCode找得到对应的键盘按键

  document.onkeydown = function(eve) {
        var e = eve || window.event;
        if(e.keyCode == 65) {
            console.log("A");
        }
    }

  keyCode存在兼容问题,兼容的解决:    var code = e.keyCode || e.which;

  特殊键:

  1)Ctrl键

    属性:ctrlKey

    取值:true |  false

    当按下其他键时值为false,按下Ctrl键时取值为true

  2)shift键

    属性:shiftKey

    取值同上。

  3)alt键:

    属性:altKey

    取值同上。

  Tip: 常用见取值  -->   左键:37,上键:38,右键:39,下键:40,回车键:13,空格键:32

7、默认事件

  我们没有设置,但是系统默认有的事件  ==>  默认事件或默认行为

  如何阻止默认事件?(有兼容)  

  //方法一:
  function stopDefault(e) {
        if(e.preventDefault) {
            e.preventDefault();   //非IE
        }else {
            e.returnValue = false;  //IE
        }
    }

  //方法二:(无兼容)
    return false;

8、事件的绑定方式

  (1)赋值式(DOM0级事件绑定)

    常用 、简单、没有兼容

 绑定方式:    obox.onclick = fn;
     obox.onclick = function() {//操作}
     obox.onclick = function() {fn();}

 删除方式:   obox.obclick = nll;

  

  (2)事件监听式(DOM0级事件绑定)

    有兼容   

  兼容的解决: 

  绑定方式:  

  function addEvent(ele,type,fn) {
        if(ele.addEventListener){
            ele.addEventListener(type,fn);
        }else if(eve.attachEvent){
            ele.attachEvent("on"+type,fn);
        } else {
            ele["on"+type] = fn;
        }
    }
  删除方式:

  function addEvent(ele,type,fn) {
        if(ele.addEventListener){
            ele.addEventListener(type,fn);
        }else if(eve.attachEvent){
            ele.attachEvent("on"+type,fn);
        } else {
            ele["on"+type] = fn;
        }
    }

9、事件流的三个阶段

  (1)冒泡阶段  (从里向外) ==>  默认阶段

  (2)目标阶段  (当前阶段)

  (3)捕获阶段 (从外向内)

  待补充……

  

原文地址:https://www.cnblogs.com/hm-08042/p/11444199.html

时间: 2024-11-09 02:38:34

事件相关内容的相关文章

DOM事件相关内容

一.事件流 事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,事件最开始由最具体触发事件的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档).2.事件捕获事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件. 二.事件处理程序 1.HTML事件处理程序直接在HTML中写事件属性,缺点:HTML与js耦合在一起.2.DOM0级事件处理程序3.DOM2级事件处理程序DO

UE4事件相关总结

转自:http://blog.ch-wind.com/ue4-event-overview/ 事件机制是实现游戏内逻辑的重要部分,在开始进行游戏逻辑的设计和实现之前,对UE4的事件机制进行理解是非常必要的.于是在这里对UE4的事件相关内容全部整理一下. 当前使用的UE版本是4.6.0. UE4的内置事件 – Event Level Reset 这个事件如其名称,只存在于Level Blueprint.只能在服务端运行. 事件发出在关卡被重置时,例如玩家死亡后地图没有重新载入而是重置的情况. – 

学习笔记之html5相关内容

写一下昨天学习的html5的相关内容,首先谈下初次接触html5的感受.以前总是听说html5是如何的强大,如何的将要改变世界.总是充满了神秘感.首先来谈一下我接触的第一个属性是  input的里面的一个属性是 type="email".以前用html的时候,type是有很多类型的,有text,password,summit.就是没听说过email.当得知这个email是验证输入的内容是否为email格式的时候.我顿时兴奋了.以前接触到html的时候,如果要验证输入内容时,是需要写js

Activity相关内容总结

/*---------------------------------------- *-描述--Activity相关内容总结. *-描述--S1.Activity的7个生命周期 * ☆☆☆☆☆单独活动生命周期: * 1.Activity创建的时候:onCreate() => onStart() => onResume() * 2.按下home键或进入其他活动(失去焦点):onPause() => onStop() * 3.再进入(重获取焦点):onRestart() => onS

事件相关的-内存和性能

由于事件处理程序带来的交互能力,在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能. 导致这一问题原因有哪些: 事件相关的处理函数越多,所占用的内存越多,函数是对象,而对象就会占据内存,从而占据内存空间.而内存越多性能就越差. 其次必须事先指定事件处理程序,则需要访问的dom次数增多,会延迟整个页面的交互就绪时间. 事实上从事件处理程序的角度出发,还有那些方法可以提升性能的? 事件委托 由于在一些常用事件是支持冒泡的,所以可以在其父节点或者其祖先节点上获取到对

获取母版页的相关内容有两种方法 --全了

获取母版页的相关内容有两种方法 1 通过findcontrol找控件ID需要在此事件中~因为Page_load中时是先内容页加载然后才是母版页加载    protected void Page_LoadComplete(object sender, EventArgs e)    {        Label2.Text = "现在时间是" + (Master.FindControl("Label1") as Label).Text;        if (Requ

视频播放相关内容总结

视频播放相关内容总结 多媒体常识: 什么是多媒体 多媒体是计算机和视频技术的结合,实际上它是两个媒体:声音和图像,或者用现在的术语:音响和电视 常用的视频格式 Android系统默认:mp4.3gp 常用格式:ts.3gpp.3g2.3gpp2.avi.mkv.flv.divx.f4v.rm.rmvb.rv.wmv.asf.mov.mpg.v8.ram.mpeg. swf.m2v.asx.ra.ram.ndivx.xvid等 常用音频格式: Android系统:mp3.ogg: 常用格式:wma

syslog相关内容介绍

syslog相关内容介绍 简介: syslog server 从网络设备接收系统日志消息,并实时显示它们. 系统日志消息可以使用以下事件进行处理: 1.在滚动窗口中显示消息 2.将消息记录到文本文件 3.将消息转发到另一个系统日志服务器 4.记录到ODBC数据库 5.记录到NT应用程序事件日志 6.通过SMTP将消息通过电子邮件发送给某人 7.运行外部程序,如寻呼通知系统 8.发送SNMP陷阱消息 系统syslog内容的相关介绍 安装源码包,既不影响系统里面运行的syslog,也由于二者容易冲突

移动端 h5开发相关内容总结——CSS篇

移动端 h5开发相关内容总结——CSS篇 标签: css移动 2016-01-06 15:59 5536人阅读 评论(3) 收藏 举报  分类: HTML+CSS(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=n