JavaScript事件模型

简介: 本章学习目标: --事件模型介绍 --事件流 --事件处理程序 --事件处理程序的返回值 --event对象 --事件类型   事件的顺序即事件流。 不同的浏览器有不同实现事件流的方法。

本章学习目标:

--事件模型介绍
--事件流
--事件处理程序
--事件处理程序的返回值
--event对象
--事件类型
 
事件的顺序即事件流。

不同的浏览器有不同实现事件流的方法。

事件冒泡(IE)。
事件捕获(NetsCape)。
DOM事件流(FireFox)。
 
事件冒泡:
事件捕获:
 
 
 
DOM事件流
 
 
事件处理程序
 
传统事件处理程序指派方法
–被广泛支持
现代事件处理程序指派方法。
–只被现代浏览器支持。
–浏览器之间存在不兼容的问题。
 
传统事件处理程序指派方法。

一、取得id = div1的元素节点。

var div1 = document.getElementById("div1"); 

//设置元素节点的onclick属性

div1.onclick = function(){alert("div1 被点了");}

function divClick(){alert(‘点中’);}

div1.onclick=divClick;

 

注意:

1、绑定事件处理程序时,后面不能加括号

2.必须确保在元素之后设置事件处理程序。

3.可在window.onload中指定处理程序。

 

二、在事件属性中指定

<div id="div1" onclick="alert("div1 被点了.");" ></div>

 

 

现代事件处理程序指派方法。

一、IE浏览器

var div1 = document.getElementById("div1");

//添加事件处理程序

div1.attachEvent("onclick",click1);//("事件处理程序的名称",函数)

//删除事件处理程序

div1.detachEvent("onclick",click1); 

function click1(){

  alert("div1 is click...");

提示:可以在一个事件上添加多个事件处理函数。

二、DOM

var div1 = document.getElementById("div1");

//添加事件处理程序,true:捕获阶段; false:冒泡阶段

div1.addEventListener("click",click1,false);//("事件名称",函数,冒泡或捕获阶段)

//删除事件处理程序

div1.removeEventListener("click",click1,false);

 

function click1(){

  alert("div1 is click...");

}

 

提示:删除事件处理程序时,阶段要相同。

传统事件处理程序是在冒泡阶段添加的。

 

兼容性问题的解决

function myaddEvent(obj,event,fn){//对象 ,事件,函数,
if(document.all){
obj.attachEvent('on'+event,fn);
}else{
obj.addEventListener(event,fn);//第三个参数默认为false(冒泡)
}
}
事件处理程序的返回值
利用事件处理程序的返回值,可以影响事件的默认行为。
–submit按钮默认行为是提交表单。
–超链接的默认行为是向指定资源发起请求。
-reset按钮默认行为是重置。。
-click单选按钮或复选框点击设置。
-keydown用户按下按钮。
-mousedown鼠标按下。
......

表单验证例子...

超链接例子。

<a href="a.html" onclick="return confirm('要跳转吗?')">a.html</a>

注意:是根据返回结果是true或false来确定是否执行默认行为。

event对象
事件发生时产生的对象。
封装了跟事件相关的信息。
–鼠标信息
–键盘信息
IE和DOM具有不同的实现方式
 
IE 得到事件对象;

div1.onclick = function(){

  var e = window.event;

}

DOM得到事件对象

div1.onclick = function(ev){

  var e = ev;

}

 

兼容性问题:

div1.onclick = function(ev){

  var e = windo.event||ev;

}

 

event属性和方法

Dom和IE的event相同点。
–获取事件类型:e.type
–获取键盘码:keydown/keyup
–检测是否按下e.shiftKey,e.altKey,e.ctrlKey
–获取客户坐标:e.clientX,e.clientY
–获取屏幕坐标:e.screenX,e.screenY
Dom和IE的event不相同点。

                                                                                                                     IE                                                            DOM

获取事件源

e.srcElement

e.target

获取字符码

e.keyCode

e.charCode

阻止默认行为

e.returnValue=false

e.preventDefault()

中止冒泡传播

e.cancelBubble=true

e.stopPropagation()

 
 
获取事件源对象:

div1.onclick = function(e){

   var ev = window.event||e;//获取事件对象

var srcObj = ev.srcElement||ev.target;

}

 
事件类型:
 
鼠标事件
常见事件
–click  点击
–dbclick  双击
–mousedown  鼠标按下时
–mouseout  当光标在一个元素上,并且用户将其移出元素边界时
–mouseover 鼠标移入时
–mouseup 释放鼠标按钮时
–mousemove  当光标在你一个元素上时 重复发生
页面上所有元素均支持鼠标事件。
 
键盘事件
常见事件
–keydown  当用户在键盘上按下一个键时发生,如果用户按键不放,就会重复发生
–keypress  当用户在键盘上按下一个字符键(不包括shift和Alt键等)时发生,如果用户按键不放,也会重复发生
–keyup   当用户释放一个键时发生
通常在输入框上实现键盘事件。
返回false表示不响应该事件
事件发生顺序
–字符键:keydown,keypress,keyup
–非字符键:keydown,keyup

 

HTML事件
常见事件
–load,unload
–select
–change  失去焦点并且值被改变
–submit
–reset 
–resize 窗口或框架尺寸调整
–scroll 有滚动条时
–focus  获得焦点
–blur  失去焦点

 

 

 

 

 

 

 
 
 
 
 
 
相关文章
|
12月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
6月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
165 23
|
6月前
|
JavaScript 前端开发 Java
【Java进阶】详解JavaScript事件
总的来说,JavaScript事件是JavaScript交互设计的核心,理解和掌握JavaScript事件对于编写高效、响应式的网页应用至关重要。
99 15
|
12月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
111 3
|
9月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
267 3
|
11月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
360 5
|
12月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
163 6
|
JavaScript 前端开发 数据库
探索Node.js中的异步编程模型
【9月更文挑战第23天】在Node.js的世界里,异步编程是核心的魔法,它让这个平台能够处理高并发请求。本文将带你深入理解Node.js的异步编程模型,通过代码示例和直观的解释,我们将一起揭开异步编程的面纱。
129 17
|
12月前
|
Web App开发 JavaScript 前端开发
深入理解Node.js事件循环和异步编程模型
【10月更文挑战第9天】在JavaScript和Node.js中,事件循环和异步编程是实现高性能并发处理的基石。本文通过浅显易懂的语言和实际代码示例,带你一探究竟,了解事件循环的工作原理及其对Node.js异步编程的影响。从基础概念到实际应用,我们将一步步解锁Node.js背后的魔法,让你的后端开发技能更上一层楼!
|
12月前
|
Web App开发 JavaScript 前端开发
JavaScript Window - 浏览器对象模型
JavaScript Window - 浏览器对象模型
109 2

热门文章

最新文章