javascript基础事件以及Even对象(6)

1.事件
  事件指的是文档或浏览器窗口中发生的一些特定的交互瞬间,也可以理解为:作用在对象上的操作(动作)。
  事件是可以被JS监听到的行为。一般在开发中,是通过触发DOM来完成事件操作。
  
2.EventTarget接收事件接口
  EventTarget是一个由可以接收事件的对象来实现接口,并且为它们创建监听器。
  三个接口:
    1)addEventListener():绑定事件监听函数,实现监听
    2)removeEventListener():移除事件监听
    3)dispatchEvent():自动触发用户自定义事件
  2.1 addEventListener()
    语法:
      DOM.addEventListener(type,listener[,useCapture])
        type:事件名
        listener:监听函数
        useCapture:是否为事件捕获(true/false)
  
  2.2 removeEventListener()
    语法:
      DOM.removeEventListener(type,listener[,useCapture])
        type:事件名
        listener:监听函数
        useCapture:是否为事件捕获(true/false)
  
  2.3 dispatchEvent()
    语法:
      DOM.dispatchEvent(event)
        event:用户自定义事件

3.JS常用事件
  3.1 UI事件
    onload:页面所有DOM元素加载完成后自动触发  (掌握)
    onunload:当页面关闭或被切换到其它时触发,一般用于做一些善后处理
    onabort:忽略错误事件
    onerror:有页面有错时将触发该事件
    onselect:选中表单元素中的文本内容时触发
    onresize:改变窗口大小时触发  (掌握)
    onscroll:滚动页面滚动条时触发  (掌握)
  3.2 焦点事件(一般作用在表单组件上)
    onfocus:获得焦点时触发  (掌握)
    onblur:失去焦点时触发  (掌握)
    onfocusin:获得焦点时触发(在子元素上也会触发,一般与onfocusout结合使用)
    onfocusout:失去焦点时触发(在子元素上也会触发,一般与onfocusin结合使用)
  3.3 鼠标事件
    onclick:单击事件  (掌握)
    ondblclick:双击事件
    onmousedown:按下鼠标键  (掌握)
    onmouseup:松开鼠标键  (掌握)
    onmousemove:移动鼠标键  (掌握)
    onmouseover:鼠标移入(经过)(会触发冒泡事件)  (掌握)
    onmouseout:鼠标离开(会触发冒泡事件)  (掌握)
    onmouseenter:鼠标移入(不会触发冒泡事件)  (掌握)
    onmouseleave:鼠标离开(不会触发冒泡事件)  (掌握)
  3.4 鼠标滚轮事件
    onmousewheel:FF不支持(用mousescroll实现)
  3.5 键盘事件(一般用于表单组件中)
    onkeydown:按下键盘键  (掌握)
    onkeyup:松开键盘键  (掌握)
    onkeypress:输入字符(等价于onkeydown+onkeyup)  (掌握)

    区别:
      onkeydown和onkeyup一般用来获取按下的键的键值,功能键也有键值,不区分字母大小写;
      onkeypress用来获取输入的字符的ASCII码值,不识别功能键,区分字母大小写
  
4.事件对象
  4.1 什么是事件对象?
    事件发生之后,全产生一个事件对象,作为参数传给监听函数。浏览器的原生提供一个Event对象,所有的事件都是这个对象的实例。
    语法:
      new Event(type,option)

      type:事件名(一般是用户自定义的)
      option:事件对象的配置,有两个重要的参数:
        bubbles:true/false,是否允许冒泡
        cancelable:true/false,表示事件是否可取消
  4.2 事件对象常用的属性和方法
    e.target: 获取当前事件触发的DOM节点
    e.type:当前触发的事件名(只读)
    e.eventPhase:返回当前事件所处的阶段(只读)
      0:事件没有产生
      1:处于捕获阶段
      2:事件到达了目标点
      3:事件处于冒泡阶段
    e.cancelable:表示事件是否可以取消(只读)
    e.preventDefault():阻止默认形为
    e.stopPropagation():阻止冒泡
  4.3 事件对象兼容写法
    1)event对象兼容写法
      var e = event || window.event
    2)event目标对象兼容写法
      event.target || event.srcElement
    3)阻止默认形为兼容写法
      event.preventDefault ? event.preventDefault() : event.returnValue = false

      或者:
        return false;

    4)阻止冒泡的兼容写法
      event.stopPropagation ? event.stopPropagation() : event.cancelBublle = true

      或者:
        return false;

5.网页中常用坐标
  5.1 获取屏幕的宽高
    screen.width //屏幕的宽
    screen.height //屏幕的高
    screen.availWidth //屏幕可用宽度 屏幕的像素高度减去系统部件高度之后的值
    screen.availHeight //屏幕可用高度 屏幕的像素宽度减去系统部件宽度之后的值(不包含任务栏的高度)
  5.2 获得窗口位置及大小
    window.screenTop //窗口顶部距屏幕顶部的距离
    window.screenLeft //窗口左侧距屏幕左侧的距离
    window.innerWidth //窗口中可视区域(viewpoint)的宽
    window.innerHeight //窗口中可视区域(viewpoint)的高度 该值与浏览器是否显示菜单栏等因素有关
    window.outerWidth //浏览器窗口本身的宽度(可视区域宽度+浏览器边框宽度)
    window.outerHeight //浏览器窗口本身的高度

    注意:
      chrome在最大化时浏览器窗口没有边框宽度,非最大化时有8px边框
      FF和IE上下左右有8px的边框宽度
  5.3 元素对象的信息
    盒子真实大小:
      boxWidth = 2*margin + 2*border + 2*padding + width
      boxHeight = 2*margin + 2*border + 2*padding + height

    clientWidth :在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
      clientWidth = 2*padding + width - scrollbarWidth

    clientHeight:在页面上返回内容的可视高度(不包括边框,边距或滚动条)
      clientHeight = 2*padding + height - scrollbarHeight

    offsetWidth :返回元素的宽度包括边框和填充,但不包括边距
      offsetWidth = 2*border + 2*padding + width

    offsetHeight :返回元素的高度包括边框和填充,但不包括边距
    offsetHeight = 2*border + 2*padding + height

    offsetLeft: 获取对象相对于版面或由 offsetLeft属性指定的父坐标的计算左侧位置
    offsetTop : 获取对象相对于版面或由 offsetTop属性指定的父坐标的计算顶端位置

    scrollWidth :返回元素的整个宽度(包括带滚动条的隐蔽的地方)
    scrollWidth = 2*padding + width

    scrollHeight :返回整个元素的高度(包括带滚动条的隐蔽的地方)
    scrollHeight = 2*padding + width

    scrollTop:向下滑动滚动块时元素隐藏内容的高度。不设置时默认为0,其值随着滚动块滚动而变化
    scrollLeft: 向右滑动滚动块时元素隐藏内容的宽度。不设置时默认为0,其值随着滚动块滚动而变化
  5.4 event对象中的坐标信息
    event.pageX:相对整个页面的坐标,以页面的左上角为坐标原点到鼠标所在点的水平距离(IE8不支持)
    event.pageY:相对整个页面的坐标,以页面的左上角为坐标原点到鼠标所在点的垂直距离(IE8不支持)

    event.clientX:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的水平距离
    event.clientY:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的垂直距离

    event.screenX:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的水平距离
    event.screenY:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的垂直距离

    event.offsetX:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离
    event.offsetY:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值