`

20、HTML事件(一)

阅读更多

事件

DOM同时支持两种事件模式:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触及DOM中的所有对象,从document对象开始,也在document对象结束(大部分兼容标准的浏览会继续将事件捕获/冒泡延续至window对象),DOM中的元素都会连续收到两次事件,一次在捕获过程中,另一次在冒泡过程中。DOM事件模型最独特的性质是,文本节点也触发事件(在IE中不会)。点击文本节点事件流应该如下图:


 
传统事件处理函数有两种分配方式:在JavaScript中或者在HTML中。


在JavaScript中分配事件处理函数:

var oDiv = document.getElementById("div1");
oDiv.onclick = function () {
	alert("I was clicked");
};

 
注:在这个分配方法,事件处理函数名称必须小写,才能正确响应事件。
在HTML中分配事件处理函数:

<div onclick='alert("I was clicked")'> </div> 

 
说明:用这种方法,事件处理函数的大小写可任意,所以onclick等同于onClick、OnClick或ONCLICK,但标准的事件处理函数应该全部用小写定义。
说明:传统分配方式有个缺陷就是只能分配一个处理函数。于是就出现了其它以下分配方式。

 

IE中特有的attachEvent()事件处理函数分配方式:

var fnClick1 = function () {
	alert("Clicked!");
};
var fnClick2 = function () {
	alert("Also clicked!");
};
var oDiv = document.getElementById("div");
oDiv.attachEvent("onclick", fnClick1);//绑定事件处理函数 
oDiv.attachEvent("onclick", fnClick2); 
//do something ... 
oDiv.detachEvent("onclick", fnClick1);//解除事件处理函数 
oDiv.detachEvent("onclick", fnClick2);

 
说明:事件处理函数总是按照添加它们的顺序进行调用。

 

DOM中的事件处理函数绑定
DOM中方法addEventListener()和removeEventListener()用来分配与移除事件处理函数。与IE不同,需三个参数:事件名、要分配的处理函数、处理函数是用于冒泡阶段还是捕获阶段,如果是捕获阶段,第三个参数为true。

var fnClick1 = function () {
	alert("Clicked!");
};
var oDiv = document.getElementById("div");
oDiv.addEventListener("onclick", fnClick1, false);//绑定事件处理函数
//do something ... 
oDiv.removeEventListener("onclick", fnClick1, false);//解除事件处理函数 

 说明:也可绑定多个函数,但要注意的是第三个参数删除时要与添加时一样才能真真删除掉函数,否则删除不掉,也不会报错。
传统方式oDiv.onclick = fnClick;oDiv.addEventListener('onclick',fnClick1,false);等价。  

事件对象的属性与方法

鼠标 / 键盘属性

 

属性

描述

IE

F

O

W3C

altKey

返回当事件被触发时,"ALT" 是否被按下。

6

1

9

Yes

button

返回当事件被触发时,哪个鼠标按钮被点击。

6

1

9

Yes

clientX

鼠标指针相对于当前窗口的水平坐标。

6

1

9

Yes

clientY

鼠标指针相对于当前窗口的垂直坐标。

6

1

9

Yes

ctrlKey

返回当事件被触发时,"CTRL" 键是否被按下。

6

1

9

Yes

metaKey

返回当事件被触发时,"meta" 键是否被按下。

No

1

9

Yes

relatedTarget

对于 mouseover 事件来说,该属性是鼠标指针移到目标节点上时所离开的那个节点。对于 mouseout 事件来说,该属性是离开目标时,鼠标指针进入的节点。

No

1

9

Yes

screenX

事件发生时鼠标指针相对于屏幕的水平坐标。

6

1

9

Yes

screenY

鼠标指针相对于屏幕的垂直坐标。

6

1

9

Yes

shiftKey

返回当事件被触发时,"SHIFT" 键是否被按下。

6

1

9

Yes

IE 属性

除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性:

 

属性

描述

cancelBubble

如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true

fromElement

对于 mouseover mouseout 事件,fromElement 引用移出鼠标的元素。

keyCode

对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符编码。对于 keydown keyup 事件,它指定了被敲击的键的虚拟键盘代码。虚拟键盘码可能和使用的键盘的布局相关。

offsetX,offsetY

发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。

returnValue

如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。

srcElement

对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。

toElement

对于 mouseover mouseout 事件,该属性引用移入鼠标的元素。

x,y

事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。

 

 

标准 Event 属性

下面列出了 2 DOM 事件标准定义的属性。

 

属性

描述

IE

F

O

W3C

bubbles

如果事件是起泡类型,则返回 true,否则返回 fasle

No

1

9

Yes

cancelable

如果用 preventDefault() 方法可以取消与事件关联的默认动作,则为 true,否则为 fasle

No

1

9

Yes

currentTarget

返回其监听器触发事件的节点,即当前处理该事件的元素、文档或窗口。在捕获和起泡阶段,该属性是非常有用的,因为在这两个节点,它不同于 target 属性。

No

1

9

Yes

eventPhase

回事件传播的当前阶段。它的值是123三个常量之一,它们分别表示捕获阶段、正常事件派发和起泡阶段。

 

 

 

Yes

target

返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。

No

1

9

Yes

timeStamp

返回事件生成的日期和时间。

No

1

9

Yes

type

返回发生的事件的类型,即当前 Event 对象表示的事件的名称。

它与注册的事件句柄同名,或者是事件句柄属性删除前缀 "on" 比如 "submit""load" "click"

6

1

9

Yes

 

标准 Event 方法

下面列出了 2 DOM 事件标准定义的方法。IE 的事件模型不支持这些方法:

 

方法

描述

IE

F

O

W3C

initEvent()

初始化新创建的 Event 对象的属性。

No

1

9

Yes

preventDefault()

通知浏览器不要执行与事件关联的默认动作。

No

1

9

Yes

stopPropagation()

终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。

No

1

9

Yes

 

  • 大小: 15.7 KB
分享到:
评论

相关推荐

    HTML表格固定第一行第一列效果

    HTML表格是一种常用的数据展示方式,但在网页中,随着数据量的增加,滚动条的出现可能会导致用户失去对表头和列标识的视线。为了解决这个问题,我们可以实现一个类似于Excel的功能,即在滚动时固定表格的第一行和第...

    鼠标事件列表--html中所有事件的列表

    以下是对标题和描述中涉及的一些主要HTML鼠标事件的详细说明: 1. onClick:这是最常见的事件,当用户单击鼠标左键时触发。常用于链接、按钮等元素,执行特定的操作或跳转。 2. onDblClick:当用户快速连续两次...

    html制作的备忘录html制作的备忘录

    在这个名为“html制作的备忘录”的项目中,我们可以推测这是一个用HTML构建的简单备忘录应用,可能用于个人或团队记录待办事项。 在HTML备忘录的创建过程中,主要涉及以下几个关键知识点: 1. **HTML基础结构**:...

    20个HTML5&CSS3超酷应用

    "HTML5重力感应游戏 甩甩领导的头像"利用HTML5的DeviceOrientation事件,获取设备的倾斜角度,将这一物理运动转化为游戏内的操作,增加了游戏的趣味性和互动性。 "HTML5超级玛丽游戏重体验 HTML5游戏经典"证明了...

    20.html

    在没有具体内容和上下文的情况下,我们可以假设这是一份HTML格式的文件,并且包含了一些与数字“20”相关的信息或主题。以下是对可能的HTML文件内容的知识点概括,以及对其内容的一种推测性的描述。 首先,我们可以...

    jQuery多功能日历插件 带事件记录功能

    接下来我们一起来看看实现这款jQuery带事件记录功能的日历插件的实现过程及源码,代码主要由HTML、CSS和jQuery组成。 HTML代码: üm Gün" data-title="WWDC 13 on San Francisco, LA"&gt; ...

    HTML期末大作业html+css+div二十个页面以上

    5. 组合使用HTML、CSS和JavaScript:可能涉及到交互元素,如按钮点击事件、表单验证等,这需要JavaScript来实现动态效果。 6. 网页优化:包括减少HTTP请求、压缩资源、使用CDN、优化图片大小等,提高网页加载速度和...

    html实现照片墙 html实现照片墙

    HTML实现照片墙是一种常见的网页设计技术,用于展示一系列图片,形成美观且互动性强的视觉效果。在本项目中,我们将探讨如何使用HTML、CSS以及可能的JavaScript来创建一个功能完备的照片墙。 首先,HTML(HyperText...

    HTML制作许愿墙-拖动东西放到许愿墙上

    在这个项目中,“HTML制作许愿墙-拖动东西放到许愿墙上”,我们主要关注的是如何利用HTML5的拖放API(Drag and Drop API)以及可能配合的jQuery插件来实现用户可以将元素拖放到一个许愿墙上的功能。 首先,让我们...

    jQuery水平时间轴切换对应事件

    &lt;li&gt;&lt;span class="timestamp"&gt;2022&lt;/span&gt; 事件一 &lt;li&gt;&lt;span class="timestamp"&gt;2021&lt;/span&gt; 事件二 ... ``` 2. CSS样式:定义时间轴的外观,如线条、时间点样式、事件内容的布局等。 ```css #timeline ul {...

    html+css侧边抽屉式导航栏

    以下将详细讲解如何使用HTML和CSS创建一个侧边抽屉式导航栏。 首先,我们需要构建HTML结构。一个简单的侧边抽屉导航栏可能包括一个包含导航链接的`&lt;nav&gt;`元素,以及一个触发导航栏显示/隐藏的按钮。示例如下: ```...

    html5 canvas躲避小游戏是男人就撑过20秒躲避游戏源码

    在这个“是男人就撑过20秒”躲避游戏中,HTML5 Canvas被用来创建一个动态的游戏环境,玩家需要操控角色避开不断出现的障碍物,目标是在20秒内尽可能生存。 首先,Canvas API提供了基本的绘图方法,如`fillRect()`...

    html实现的树状图

    而 jQuery 是一个流行的 JavaScript 库,简化了 JavaScript 的使用,提供了丰富的 DOM 操作、事件处理和动画效果。 在构建树状图的过程中,HTML 用于创建基本的结构,每个节点可以是一个 `&lt;ul&gt;`(无序列表)或 `...

    20表白html源代码

    在本主题中,“20表白html源代码”指的是利用HTML编写的20种不同的浪漫表白页面的源代码。这些源代码通常包含创意的布局、动画效果以及个性化的情感表达,旨在通过网页向心仪的人传递爱意。 HTML源代码由一系列的...

    HTML5+CSS3 视频或音频事件.docx

    20. `loadstart`:浏览器开始查找媒体数据,这个事件在播放前会先触发。 21. `stalled`:媒体数据加载受阻,但稍后可能会恢复。 22. `play`:当执行`play`方法或设置`autoplay`属性后触发。 下面是一个简单的示例,...

    HTML分析器——htmlparser1-4_20

    在这个项目“HTML分析器——htmlparser1-4_20”中,我们可能涉及到了一系列的HTML解析技术与实践。 首先,HTML解析器的核心功能是对HTML标记语言进行解析,识别出标签、属性、文本等内容。这通常包括词法分析(将...

    60多套html5移动端模板

    HTML5移动端模板是一系列预先设计和编码的网页结构,它们为开发者和设计师提供了一个快速构建移动网站或应用的基础。这些模板通常包含响应式布局,能够适应不同尺寸的屏幕,从智能手机到平板电脑都能良好显示。在"60...

    近20款样式的HTML5环形进度条插件

    HTML5环形进度条插件是网页开发中用于展示任务进度、数据加载或者任何需要进度指示情况的一种交互元素。在现代网页设计中,这类插件不仅提供了基本信息展示功能,还能通过丰富的样式提升用户体验,使界面更具吸引力...

    html+css轮滑式卡片

    在本主题中,我们将深入探讨如何使用HTML和CSS创建一个轮滑式卡片(Carousel)效果,这是一种常见于网站中展示图片或内容的交互式组件。 首先,HTML是HyperText Markup Language的缩写,它是用来构建网页内容的语言...

    html5过山车游戏源码

    HTML5过山车游戏源码是一个基于HTML5技术开发的游戏项目,主要利用了HTML5的Canvas元素、JavaScript以及可能的一些CSS3特性来实现。在这个游戏中,玩家可以通过键盘或触摸屏控制过山车在虚拟的轨道上运行,体验刺激...

Global site tag (gtag.js) - Google Analytics