惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - sunfishlu

一步一步学习Windows Azure(二)Azure之Hello World 一步一步学习Windows Azure(一)概述 一步一步学习CakePHP(三)model - sunfishlu 一步一步学习CakePHP(二)controllers 一步一步学习CakePHP(一)基本概念 JQuery写的个性导航菜单 - sunfishlu JQueryUI(五):Dialog(第二部分) JQueryUI(四):Dialog(第一部分) - sunfishlu JQueryUI(三):Accordion JQueryUI(二):Tabs(第二部分) JQueryUI(一):Tabs(第一部分) - sunfishlu - 博客园 封装的Ext Grid javascript与dom编程(五)ajax 无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域。 - sunfishlu - 博客园 ToolTip(图片文字) with Jquery - sunfishlu Ext中combobox在Grid里显示问题 javascript与dom编程(四)animation(例)Tooltips javascript与dom编程(三)animation - sunfishlu extjs grid设置某列背景颜色
javascript与dom编程(二)Event
sunfishlu · 2008-11-23 · via 博客园 - sunfishlu

一:Event Handlder

一个Event Handlder就是嵌入DOM节点的JavaScript方法,当此节点发生事件时,那么它就会自动的被触发。如下图可以说明此概念。

 

例如: 

Code

Code

A:Default Actions

     浏览器响应事件通常的做法。大多数情况下,我们希望如此,但是也有一些时候,答案是否定的。

     阻止Default Actions发生的最简单的方法就是为此event创建一个event handler,然后return false。例如:我们修改上面创建的clickListeners。

Code

 B:this关键字

     当我们写一个event handler来关联到许多HTML中的元素时,那么this是一个不错的选择。它表现的有点像变量,但是我们不能给它赋值,它的值就是方法所执行的对象。例如:要打开所点击的URL。

Code

C:Event handler的缺陷。

     对一个html的元素,只能分配给它一个event handler,否则前面的event handler会不起作用,也就是被后面的所取代。

二:Event Listeners

     Event Listeners和Event handler比较相似,它也是嵌到dom节点里的JavaScript方法,但是我们可以分配许多的Event Listeners给一个HTML元素。如图所示。

     创建一个Event Listeners的代码:element.addEventListener("event", eventListener, false);第三个参数为true时,表示事件传播的时候出发该事件,false时则不考虑事件传播。在IE浏览器下,创建的代码:element.attachEvent("onevent", eventListener);清除event handler的代码分别是:element.removeEventListener("event", eventListener, false);element.detachEvent("onevent", eventListener);

     在使用的时候,我们需要进行判断来保证对不同的浏览器使用正确的方法。例如:

Code

Code

A:Default Actions

     为了阻止Default Actions,我们使用preventDefault方法,在IE浏览器中,我们使用returnValue。例如:

Code

注:在IE中,event作为window对象的一个属性,可以直接使用,而在firefox中,需要通过传参的方式来传播事件。

B:事件传播

     事件传播分为3个阶段:

     1:捕获阶段。事件会沿着dom树,访问每一个节点,直到到达目标元素。但是在IE浏览器中没有此阶段,其实大多数开发者都避免使用capturing event listeners

     2:结果程序执行阶段。浏览器要找分配到目标节点上的Event Listeners,然后执行它。

     3:事件冒泡阶段