博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js高级程序设计笔记(13章)
阅读量:7024 次
发布时间:2019-06-28

本文共 3134 字,大约阅读时间需要 10 分钟。

  hot3.png

1. 跨浏览器事件对象

var Eventutil = {    addHandler: function (element, type, handler) {        if (element.addEventListener) {            element.addEventListener(type, handler, false)        } else if (element.attachEvent) {            element.attachEvent('on' + type, handler)  //ie        } else {            element['on' + type] = handler   //极少        }    },    getEvent: function (event) {        return event ? event : window.event  // :ie    },    getTarget: function (event) {        return event.target || event.srcElement  //  ||ie    },    preventDefault: function (event) {  //禁止默认事件        if (event.preventDefault) {            event.preventDefault()        } else {            event.returnValue = false  //ie        }    },    stopPropagation: function (event) {  //阻止事件冒泡        if (event.stopPropagation) {            event.stopPropagation()        } else {            event.cancelBubble = true //ie        }    },    removeHandler: function (element, type, handler) {        if (element.removeEventListener) {            element.removeEventListener(type, handler, false)        } else if (element.detachEvent) {            element.detachEvent('on' + type, handler) // ie        } else {            element['on' + type] = null  //极少        }    },    geRelatedTarget: function (event) {  //绑定在mouseover等上,返回是从哪个元素移入该元素的        if (event.relatedTarget) {            return event.relatedTarget        } else if (event.toElement) { //ie            return event.toElement        } else if (event.fromElement) { //ie            return event.fromElement        } else {            return null        }    },    getButton: function (event) { //绑定在mousedown或mouseup上,返回按下或释放的鼠标键        if (document.implementation.hasFeature("MouseEvents", "2.0")) {            return event.button;        } else {  //ie            switch (event.button) {                case 0:                case 1:                case 3:                case 5:                case 7:                    return 0;  //左键                case 2:                case 6:                    return 2;  //右键                case 4:                    return 1;  //中键            }        }    },    getWheelDelta: function (event) { //绑定mousewheel事件        if (event.wheelDelta) {            return event.wheelDelta; //向下滚动时是-120的倍数        } else {            return -event.detail * 40; //fx向下滚动时是3的倍数        }    }}

2.事件类型

(1)load:在window上添加,当页面完全加载完毕后触发(图像,js文件,css文件等); 在image元素或Image对象上添加,当图像加载完成后触发(只要添加了src属性,不论是否加入到dom树中就会开始加载);在script或link元素上添加,加载完毕后触发(添加src属性,并且加入到文档中,才会开始下载)

3.鼠标事件的各种位置坐标

clientX/Y  事件在视口中的位置(浏览器大小-浏览器工具栏)

pageX/Y   事件在页面中的位置(clientX/Y + 滚动距离)                                                                                          滚动距离:document.documentElement.scrollTop/Left

screenX/Y  事件在整个电脑屏幕中的位置

3.鼠标事件时按下特定键位

event.shiftKey/ctrlKey/altKey/metaKey    按下这些键时,鼠标的事件对象中的这些属性会返回true,从而判断按下键位加鼠标点击(meta在win下是windows键,mac下是cmd键)

4.触摸设备的特别情景

(1)不支持dblclick事件,因为双击会使浏览器放大

(2)轻击可单击元素(单击有默认操作的元素或已经绑定点击事件的元素)时会触发mousemove,如果此操作导致内容变化,将不再有其他事件发生。如果屏幕没有因此变化,则会依次触发mousedown、mouseup、click事件。轻击不可单击元素不会触发任何事件。

(3)mouse事件也会触发mouseover和mouseout

(4)两个手指放在屏幕上且页面随手指移动而滚动时会触发mousewheel和scroll事件。

5.变动事件

 

 

转载于:https://my.oschina.net/dtdths/blog/1577037

你可能感兴趣的文章
Sublime Text编辑器如何显示顶部的菜单栏
查看>>
STM32起步过程
查看>>
datagridview 单元格为 编辑状态 微软教程
查看>>
c++ 捕获构造函数成员初始化列表产生的异常
查看>>
Gridview中HyperLink的NavigateUrl绑定传参问题
查看>>
WebRequest 超时不起作用
查看>>
OpenGL 函数作用列表
查看>>
12篇学通C#网络编程——第四篇 TCP应用编程
查看>>
ASP.NET MVC的DropDownList
查看>>
B-tree vs hash_我思故我在_百度空间
查看>>
spring.net 结合简单三层实例
查看>>
phpcms(v9)添加模型
查看>>
LINQ 图解
查看>>
Windows C++ 应用程序通用日志组件(组件及测试程序下载)
查看>>
设计模式、模式-深入理解JavaScript系列-by小雨
查看>>
【转】ubuntu 12.04 LTS 网络配置要点
查看>>
一些好用的DNS服务器地址
查看>>
WURFL简介
查看>>
Storage VMotion
查看>>
路径浏览器举例说明android编程中获取不到指定文件夹中的内容的原因及解决办法...
查看>>