- 浏览: 3322338 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (567)
- Web前端-html/表单 (19)
- Web前端-CSS (24)
- Web前端-CSS框架 (4)
- Web前端-JS语言核心 (50)
- Web前端-JS客户端 (26)
- nodejs生态+grunt (10)
- seajs和requirejs (9)
- backbone等框架 (7)
- 模板基础 (7)
- Web前端-deps(不改动) (6)
- Web前端-component (10)
- Web前端-jquery-plugin (13)
- 浏览器兼容性 (6)
- Web前端-使用jQuery (25)
- Web前端-使用jqueryui (6)
- Web前端-性能优化 (3)
- Web协议-HTTP (6)
- ExtJS (13)
- PHP (22)
- PHP面向对象 (4)
- PHP扩展-SOAP (6)
- PHP扩展-curl (4)
- PHP与HTML(导出) (5)
- PHP扩展-综合 (7)
- mysql基础应用 (18)
- 技术心情 (18)
- 算法和面试题 (17)
- 工具(开发)使用 (36)
- memcached原理 (2)
- session和cookie (4)
- UML (2)
- Web前端_FusionCharts (5)
- Web前端_Flex (4)
- Web前端_JSP (3)
- JavaSE (10)
- JavaEE (4)
- tomcat (2)
- Servlet开发 (3)
- Spring开发 (1)
- REST相关 (2)
- 大访问量、高并发 (2)
- 网络编程 (1)
- YII (21)
- linux命令和内核 (12)
- yii与数据库 (10)
- yii与表单 (12)
- yii view层 (1)
- perl (7)
- yii扩展 (7)
- shell (4)
- photoshop (7)
- 视觉设计 (2)
- 我关注的名人在路上 (4)
- 1-自学能力 (1)
- 2-人际沟通能力 (3)
- 3-职业规划能力 (7)
- 4-项目管理能力 (2)
- python (3)
- django (4)
- Mysql高级应用 (6)
- prototype.js (4)
- Web系统安全 (1)
- Web前端-mobile (2)
- egret (6)
- jQuery源码分析 (5)
- fis (4)
最新评论
-
yzq21056563:
感谢作者分享~请教下,http://www.lisa33xia ...
CSS基础:text-overflow:ellipsis溢出文本 -
u012206458:
$.ajax的error,complete,success方法 -
DEMONU:
谢谢,虽然不能给你赞助,但是要给你顶
mysql中key 、primary key 、unique key 与index区别 -
njupt_tolmes:
阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿滕庆亚 ...
CSS基础:text-overflow:ellipsis溢出文本 -
zenmshuo:
用过SpreadJS,也包含数据可视化的图表
推荐几个web中常用js图表插件
作者:zccst
2014-5-4
一、事件流
标准:DOM事件流中,实际的目标在捕获阶段不会接收到事件。即捕获从document到body就停止了。
在处于目标阶段,事件在div上发生,并在事件处理中被看成冒泡阶段的一部分。
实际:在捕获阶段会涉及,结果有两个机会在目标对象上操作事件。
二、事件处理程序(事件监听器)
事件处理程序:HTML,DOM0级,DOM2级
HTML:<input type="button" value="ClickMe" onclick="alert('Clicked')" />需转义特殊字符
缺点:1)先调用后解析会报错;2)作用域链有浏览器差异性;3)html和js耦合较严重。
DOM0级:var btn = document.; btn.onclick=function(){}; 冒泡阶段处理,删除用btn.onclick=null即可;
DOM2级:addEventListener("click",function(){},true);//true在捕获阶段,false在冒泡阶段
好处:可以添加多个事件处理程序
removeEventListener();移除,但无法移除匿名函数,如果想移除需写命名函数
IE事件处理程序:
attachEvent("onclick",function(){}). IE8及更早版本,只支持事件冒泡
与DOM0级事件不同的是DOM0在所属元素的作用域内运行;在attachEvent()方法情况下,在全局作用域中运行,this等于window
var btn = document.getElementById("myBtn");
btn.attachEvent("click",function(){ alert ( this == window); });
也可以添加多个,不同的是执行顺序,与标准正好相反(后添加先执行)
detachEvent也不能移除匿名函数
注:支持IE事件处理程序的浏览器有IE何Opera。
跨浏览器,只需关注冒泡阶段
1,addHander(ele,type,handler) 视情况分别使用DOM0级、DOM2级防腐或IE防腐来添加事件
这两个方法会先检测是否存在DOM2级,如果是IE浏览器,最后一种可能是DOM0级方法。
使用:
var btn = document.
var handler = function(){};
EventUtil.addHandler(btn,'click',handler);
三、事件对象
1,标准事件对象
event共有的成员:bubbles,cancelable(是否可以取消冒泡),currentTarget,defaultPrevented,preventDefault(),stopPropagation,target,type等
如果直接将事件处理程序指定给了目标元素,则this == currentTarget == target(currentTarget是绑定事件处理程序的对象)
如果事件处理程序存在于按钮的父节点中,则三者不相同。this和currentTarget指向父元素(target始终指向自身)
preventDefault() 阻止默认行为。比如a的默认行为是点击时导航到href指定的URL。 var link = document; link.onclick=function(e){e.preventDefault();}
stopPropagation() 停止冒泡
eventPhase 1捕获阶段,2处于目标对象,3处于冒泡阶段。event.eventPhase
2,IE事件对象
cancelBubble, returnValue, srcElement, type
DOM0级:window.event
DOM2级:event
但DOM标准中是TRUE
3,跨浏览器事件对象
四个函数:
实际使用的时候
四、事件类型
DOM3规定:
UI: load,unload,abort,error,select,resize,scroll
焦点:blur,focus,focusin/focusout(冒泡)
鼠标/滚轮 除了mouseenter/mouseleave不冒泡,其他都冒泡。顺序:down-up-click-down-up-click-db
ClinetX/ClientY所有浏览器都支持
pageX/pageY页面本身的左边和顶边计算的,而非浏览器。没有页面滚动时,两者相同。I8及更早不支持page
ScreenX/ScreenY屏幕坐标
相关元素:mouseover和mouseout,配对出现的。
键盘/文本:keydown,keypress,keyup。字符键down-press-up,非字符键down-up
合成事件
变动事件:删除节点,添加节点
HTML5事件:context,beforeunload
设备事件:
触摸与手势事件:touchstart,touchmove,touchend
五、内存和性能
1,事件委托
2,移除事件处理程序 btn.onclick=null, onunload事件移除所有事件处理程序
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
2014-5-4
一、事件流
标准:DOM事件流中,实际的目标在捕获阶段不会接收到事件。即捕获从document到body就停止了。
在处于目标阶段,事件在div上发生,并在事件处理中被看成冒泡阶段的一部分。
实际:在捕获阶段会涉及,结果有两个机会在目标对象上操作事件。
二、事件处理程序(事件监听器)
事件处理程序:HTML,DOM0级,DOM2级
HTML:<input type="button" value="ClickMe" onclick="alert('Clicked')" />需转义特殊字符
缺点:1)先调用后解析会报错;2)作用域链有浏览器差异性;3)html和js耦合较严重。
DOM0级:var btn = document.; btn.onclick=function(){}; 冒泡阶段处理,删除用btn.onclick=null即可;
DOM2级:addEventListener("click",function(){},true);//true在捕获阶段,false在冒泡阶段
好处:可以添加多个事件处理程序
removeEventListener();移除,但无法移除匿名函数,如果想移除需写命名函数
IE事件处理程序:
attachEvent("onclick",function(){}). IE8及更早版本,只支持事件冒泡
与DOM0级事件不同的是DOM0在所属元素的作用域内运行;在attachEvent()方法情况下,在全局作用域中运行,this等于window
var btn = document.getElementById("myBtn");
btn.attachEvent("click",function(){ alert ( this == window); });
也可以添加多个,不同的是执行顺序,与标准正好相反(后添加先执行)
detachEvent也不能移除匿名函数
注:支持IE事件处理程序的浏览器有IE何Opera。
跨浏览器,只需关注冒泡阶段
1,addHander(ele,type,handler) 视情况分别使用DOM0级、DOM2级防腐或IE防腐来添加事件
var EventUtil = { addHandler:function(elem,type,handler){ if(elem,addEventListener){ elem.addEventListener(type, handler, false); }else if(elem.attachEvent){ elem.attachEvent("on"+type, handler); }else{ elem["on"+type] = handler; } }, removeHandler:function(elem,type,handler){ if(elem.removeEventListener){ elem.removeEventListener(type, handler, false); }else if(elem.detachEvent){ elem.detachEvent("on"+type, handler); }else{ ele["on"+type] = null; } } }
这两个方法会先检测是否存在DOM2级,如果是IE浏览器,最后一种可能是DOM0级方法。
使用:
var btn = document.
var handler = function(){};
EventUtil.addHandler(btn,'click',handler);
三、事件对象
<input type="button" value="ClickMe" onclick="alert(event.type)" /> var btn = document.getElementById("myBtn"); btn.onclick = function(event){ alert(event.type);//"click" }; btn.addEventListener("click",function(event){ alert(event.type);//"click" }, false);
1,标准事件对象
event共有的成员:bubbles,cancelable(是否可以取消冒泡),currentTarget,defaultPrevented,preventDefault(),stopPropagation,target,type等
如果直接将事件处理程序指定给了目标元素,则this == currentTarget == target(currentTarget是绑定事件处理程序的对象)
如果事件处理程序存在于按钮的父节点中,则三者不相同。this和currentTarget指向父元素(target始终指向自身)
preventDefault() 阻止默认行为。比如a的默认行为是点击时导航到href指定的URL。 var link = document; link.onclick=function(e){e.preventDefault();}
stopPropagation() 停止冒泡
eventPhase 1捕获阶段,2处于目标对象,3处于冒泡阶段。event.eventPhase
2,IE事件对象
cancelBubble, returnValue, srcElement, type
DOM0级:window.event
DOM2级:event
preventDefault() = returnValue;//(默认TRUE,设置FALSE可以取消事件的默认行为) stopPropagation() = cancelBubble;//(默认FALSE,设置TRUE可以取消冒泡) target = srcElement var btn = document.getElementById("myBtn"); btn.onclick=function(){ //alert(window.event.srcElement === this);//TRUE,DOM0级srcElement与this相同 } btn.attachEvent("onclick",function(event){ alert(event.srcElement === this);//FALSE,DOM1级两者不相同 });
但DOM标准中是TRUE
btn.addEventListener("click",function(event){ alert(event.target === this);//TRUE alert(event.currentTarget === this);//TRUE })
3,跨浏览器事件对象
四个函数:
var UtilEvent = { addHandler:function(elem,type,handler){}, removeHandler:function(elem,type,handler){}, //添加四个新方法 getEvent:function(event){ return event?event:window.event; } getTarget:function(event){ return event.target||event.srcElement; } preventDefault:function(event){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue=false; } } stopPropagation:function(event){ if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } } };
实际使用的时候
btn.onclick=function(){ event = UtilEvent.getEvent(event);//先用getTarget var target = EventUtil.getTarget(event); EventUtil.preventDefault(event); }
四、事件类型
DOM3规定:
UI: load,unload,abort,error,select,resize,scroll
焦点:blur,focus,focusin/focusout(冒泡)
鼠标/滚轮 除了mouseenter/mouseleave不冒泡,其他都冒泡。顺序:down-up-click-down-up-click-db
ClinetX/ClientY所有浏览器都支持
pageX/pageY页面本身的左边和顶边计算的,而非浏览器。没有页面滚动时,两者相同。I8及更早不支持page
ScreenX/ScreenY屏幕坐标
相关元素:mouseover和mouseout,配对出现的。
键盘/文本:keydown,keypress,keyup。字符键down-press-up,非字符键down-up
合成事件
变动事件:删除节点,添加节点
HTML5事件:context,beforeunload
设备事件:
触摸与手势事件:touchstart,touchmove,touchend
五、内存和性能
1,事件委托
2,移除事件处理程序 btn.onclick=null, onunload事件移除所有事件处理程序
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
发表评论
-
js浏览器端判断当期是否在线
2015-04-17 20:50 2370作者:zccst 纯浏览器端解决办法就是轮询,img轮询和a ... -
scroll时判断向下滚动还是向上滚动
2015-03-30 16:53 38295作者:zccst 有时候需要用到,判断页面是向上还是向下滚动 ... -
[BOM]navigator知识点
2015-03-20 14:42 4849作者:zccst 历史 最早的时候有一个浏览器叫NCSA ... -
[html5]navigator.online属性检测用户是否在线
2015-03-20 14:11 5347作者:zccst navigator.online属性检测用 ... -
document.body、document.documentElement和window获取视窗大小的区别
2015-03-04 15:12 27660作者:zccst 参考网址:http://www.ido32 ... -
Document,Node,Element,HTMLDocument ,HTMLCollection,HTMLElement,NodeList
2015-01-05 15:38 7563作者:zccst 这个问题如 ... -
doctype和compatModel相关
2015-01-04 19:30 714作者:zccst 一、doctype 1,严格模式与混杂模 ... -
window.history
2014-12-23 10:37 10068作者:zccst 旧版: f ... -
js 页面刷新location.reload和location.replace的区别小结
2014-12-02 20:57 129608作者:zccst reload 方法,该方法强迫浏览器刷新当 ... -
又一次掉进encodeURIComponent的坑里了
2014-11-05 18:21 22492作者:zccst 原坑: get请求 ajax.get ( ... -
DOM元素在浏览器中的位置参数,如offset,ownerDocument
2014-10-08 17:07 4254作者:zccst 2014-10-21 区分clientX ... -
js跨域的多种解决办法
2014-09-20 09:41 945作者:zccst 2015-3-11 JavaScript ... -
[Event]事件(高程版)(二)事件处理程序
2014-06-17 18:00 766作者:zccst <input type=" ... -
[Event]事件(高程版)(一)事件类型
2014-06-17 17:59 727作者:zccst 一、UI事件 1,load 两种添加方式 ... -
target与currentTarget的区别(jqueryui方式获取z-Index)
2014-06-17 12:00 15939作者:zccst 2014-6-25 今天看了jQuery ... -
JSONP原理及实现
2014-06-09 16:47 12362作者:zccst 2015-04-30 更新 跨域实现的 ... -
DOM0-节点关系,节点操作API
2014-06-09 15:29 950作者:zccst 2014-09-20 补 ... -
document操作iframe
2013-12-13 16:26 1269作者:zccst //在iframe内获取父页面节点 win ... -
js-location对象
2013-12-11 17:05 1506zccst总结 2015-04-14 获取location的 ... -
document.body.scrollTop和document.documentElement.scrollTop
2013-09-14 14:44 1372作者:zccst 网页可见区域宽: document.bo ...
相关推荐
总结,ASP.NET服务器控件高程涉及到控件的创建、事件处理、数据绑定等多个方面,理解并熟练掌握这些知识点对于高效开发ASP.NET Web应用至关重要。在实际开发中,合理利用服务器控件,结合良好的设计模式,可以大大...
2. **WebControl类**:这是ASP.NET服务器控件的基础类,提供了许多通用的功能,如样式设置、事件处理等。通过继承WebControl,开发者可以创建自己的自定义服务器控件。 3. **数据绑定**:ASP.NET服务器控件支持多种...
《JavaScript高级程序设计》(第三版),又被誉为“JS高程红宝书”,是JavaScript学习者必读的经典之作。此书全面深入地介绍了这门语言的各个方面,特别针对ES5之后的新特性进行了详尽的讲解。以下是根据书中的内容...
4. **Delphi测试题.txt**:这可能是一些用于检测开发者Delphi技能的题目,包括了对语言基础、控件使用、事件处理等方面的测试,通过解答这些题目可以巩固和提高Delphi编程能力。 5. **Delphi总结文档.txt**:这可能...
地球重力场模型是描述地球引力势及其梯度的数学表达式,它不仅反映了地球内部的物质分布,还包含了地球自转的信息,从而影响地球及其附近空间的物理事件。在GPS高程转换中,地球重力场模型的核心作用在于,它能够...
8. **AJAX和Fetch API**:用于在不刷新整个页面的情况下与服务器进行异步通信,是构建现代Web应用的基础。 9. **错误处理**:通过try...catch语句捕获和处理运行时错误,以及使用finally块确保某些代码无论是否发生...
在测量放线阶段,精确的定位和高程控制对于确保变压器基础的正确安装至关重要。土方开挖是另一项基础性工作,其质量直接影响变压器基础的稳定性。分部开挖的方式能够根据现场条件灵活应对,同时保证边坡的稳定性和...
综上所述,消息驱动的程序结构和“文档-视”结构是构建用户界面程序的重要设计模式,它们为程序的灵活性和可扩展性提供了基础。在实际开发中,结合信号与槽机制,可以方便地实现GUI组件之间的通信,提升用户体验。
通过这个项目,我们可以学习到C++编程基础、控制台应用程序设计以及EasyX库的应用技巧。 首先,让我们了解一下C++。C++是一种通用的、面向对象的编程语言,它继承了C语言的强大功能,并引入了类和对象的概念,使得...
另一种方法是历史分析法,也叫“将古论今”,它基于现代地质作用的规律,用于分析古代的地质事件和古地理环境。 在地球的几何结构中,大地水准面是一个关键概念,它指的是平均海平面延伸到陆地形成的连续封闭曲面。...
- 地形:Cesium内置了多种地形提供者,如地形服务(如USGS)来加载全球高程数据。 - 影像:通过 imagery layers 加载卫星图像或地图服务,支持多图层叠加。 4. **3D模型加载** - glTF(GL Transmission Format)...
VB是一种由微软公司推出的事件驱动编程语言,它以其直观的图形用户界面和易于理解的语法深受开发者喜爱。本书旨在帮助读者深入理解和熟练掌握VB编程技术,从而提升开发能力。 首先,VB的基础知识是本书的重要组成...
C#的特性如属性、事件和委托,能够很好地与WPF的MVVM(Model-View-ViewModel)设计模式结合,提供数据绑定和命令处理,以实现用户界面与业务逻辑的解耦。 在3D GIS领域,常见的功能包括地形渲染、空间数据分析、...
2. **地形和影像数据**:Cesium支持多种地形和影像数据源,包括USGS的DEM数据和商业卫星影像,可以显示全球范围内的高程信息和高分辨率地表覆盖图。 3. **时间动态显示**:Cesium支持时间动态展示,可以用来回放...
通过这个VB6.0计算器程序,你可以学习到基础的GUI设计、事件驱动编程、错误处理、数据类型转换以及简单的算法实现。这不仅对初学者是很好的实践项目,对有一定经验的开发者也有助于回顾和巩固基础知识。同时,VB6.0...
- 水文模型:arcGIS Pro结合HydroTools等插件,支持建立降雨径流模型、洪水模拟模型等,帮助预测洪水、干旱等水文事件。 - 水资源评估:通过水量平衡、地下水模型等,分析水资源的可用性和可持续性。 6. **pro...
数据库系统集成 5.8.1、数据库系统 数据的整合是建立省应急平台信息系统的基础核心。建立标准统一的分布式数据库,合理规划整个系统的数据库架构,减少... 应与国务院应急平台空间信息的坐标系统和高程系统保持一致。
3. 每个光子事件的时间飞行(TOF)校正,以消除已知的系统时间偏移和时间基准误差,这些误差基于GPS的1PPS和PCE自校准通道假设光速恒定(暂时忽略大气效应)。 **算法理论基础文档(ATBD)** ATBD是描述将L1A数据...
通过学习和分析"canvaslib_170111_demo"中的"js_canvas_lib",开发者不仅可以掌握Canvas2D的基本用法,还能了解到如何将这些基础API封装成实用的库,提升开发效率,同时创造出更具视觉吸引力和交互性的Web应用。...
5. **MFC编程基础**:了解如何使用MFC框架创建Windows应用程序,包括对话框、控件的使用,以及事件处理机制。 6. **数据处理**:学习如何在MFC程序中读取、存储和处理水准测量的数据,可能涉及到文件操作、数据结构...