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

推荐订阅源

Google DeepMind News
Google DeepMind News
S
Secure Thoughts
Application and Cybersecurity Blog
Application and Cybersecurity Blog
AWS News Blog
AWS News Blog
GbyAI
GbyAI
腾讯CDC
WordPress大学
WordPress大学
V
V2EX
小众软件
小众软件
C
CXSECURITY Database RSS Feed - CXSecurity.com
M
MIT News - Artificial intelligence
T
Troy Hunt's Blog
H
Hacker News: Front Page
Scott Helme
Scott Helme
The Hacker News
The Hacker News
Schneier on Security
Schneier on Security
K
Kaspersky official blog
S
Security @ Cisco Blogs
N
News | PayPal Newsroom
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
P
Privacy International News Feed
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
O
OpenAI News
P
Proofpoint News Feed
J
Java Code Geeks
B
Blog RSS Feed
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
阮一峰的网络日志
阮一峰的网络日志
P
Palo Alto Networks Blog
Engineering at Meta
Engineering at Meta
AI
AI
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
G
GRAHAM CLULEY
A
Arctic Wolf
N
Netflix TechBlog - Medium
L
LINUX DO - 最新话题
爱范儿
爱范儿
博客园 - 聂微东

博客园 - sunfishlu

一步一步学习Windows Azure(二)Azure之Hello World 一步一步学习Windows Azure(一)概述 一步一步学习CakePHP(三)model 一步一步学习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 Ext中combobox在Grid里显示问题 javascript与dom编程(四)animation(例)Tooltips javascript与dom编程(三)animation 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:事件冒泡阶段