【JavaScript】事件

	“事件”这一名词,在我们看来,已经是非常熟悉的了。在C/S项目中,我们都是通过触发各种事件来实现各种功能的。比如说:按钮点击事件,窗体加载事件等。而在B/S项目中,同样有事件这一概念。这篇博客就对JavaScript视频中关于事件的知识点做个总结。
 		导图中是视频(63-68集)关于讲解事件的全部内容,下面再具体总结一下。
	抽象部分
	一.JavaScript事件
	它是由访问Web页面的用户引起的一系列操作。例如:用户点击。当用户点击执行某些操作的时候,再去执行一系列代码。
	二.JavaScript有三种事件模型
	内联模型、脚本模型和DOM2模型。
	比较:内联模型与脚本模型
	内联是和HTML混写的,没有与HTML分离。
	举例:
//HTML中把事件处理函数作为属性执行JS代码(内联模型)
<input type="button" value="按钮" onclick=“alert('Lee');"/>
//在JavaScript中处理事件(脚本模型)
var input=document.getElementsByTagName('input')[0];
input.onclick=function(){
alert('Lee');
};
	三.JavaScript可以处理的事件类型
	鼠标、键盘和HTML事件。
	下面各列举几个实例:
	1.鼠标事件
	click:点击鼠标或按回车触发
input.onclick=function(){
    alert('Lee');
};
	mousedown:按下未弹起触发
input.onmousedown=function(){
    alert('Lee');
};
	2.键盘事件
	keydown:按任意键触发,如果不放,则重复触发
onkeydown=function(){
    alert('Lee');
};
	keyup:释放键盘上的键触发
onkeyup=function(){
    alert('Lee');
};
	3.HTML事件
	load:页面完全加载后在window上触发
window.onload=function(){
    alert('Lee');
};
	change:当文本框内容改变且失去焦点后触发
input.onchange=function(){
    alert('Lee');
};
	submit:当用户点提交按钮在<form>元素上触发
form.onsubmit=function(){
    alert('Lee');
};
	具体部分
	一.事件对象
	一般称作为event对象,它是浏览器通过函数把这个对象作为参数传递过来的。
	二.鼠标事件
	获取按钮信息
	获取屏幕坐标
	修改键
	三.键盘事件
	键码:发生keydown和keyup事件时,event对象的keycode属性中会包含一个代码,与键盘上一个特定的键对应。
	字符编码:发生keypress事件,event对象charCode属相包含键所代表字符的ASCII编码。
	四.事件流
	包括两种模式:冒泡与捕获
	事件冒泡是从里往外逐个触发,事件捕获是从外往里逐个触发。现代浏览器默认都是冒泡模型。
		绑定部分
	一.传统事件绑定问题
	问题一:一个事件处理函数触发两次事件。当两个JS同时执行的时候,后面一个会把前面一个完全覆盖掉。
	解决:
	执行前先判断之前是否有window.onload,创建一个保存器,把之前的window.onload保存起来。
	代码:
window.onload=function(){                     //第一个要执行的事件
    alert('Lee');
};
if (typeof window.onload=='function'){    //判断之前是否有window.onload
    var saved=null;                                    //创建一个保存器
    saved=window.onload;                        //保存之前的window.onload
}
window.onload=function(){                     //最终一个要执行事件
    if(saved)saved();                                 //执行之前一个事件
    alert('Mr.Lee');                                     //执行本事件的代码
};
	问题二:事件切换器在扩展时,之前的会被覆盖。或者解决覆盖问题后,就必须包含同时执行,又出新问题。
	解决:创建一个自定义的事件处理函数
	代码:
function addEvent(obj,type,fn){               //取代传统处理函数
    var saved=null;                                   //保存每次触发的事件处理函数
    if (typeof obj['on'+type]=='function'){  //判断是不是事件
        saved=obj['on'+type];                   //如果有,保存
    }
    obj['on'+type]=function(){
        if(saved)saved();                            //执行上一个
        fn.call(this);                                    //执行函数,传递this
    };
}
addEvent(window,'load',function(){        //执行
    alert('Lee');
});
addEvent(window,'load',function(){        //执行
    alert('Mr.Lee');
});
	二.W3C事件处理函数
	W3C现代事件绑定好处:不需要自定义;可以屏蔽相同的函数;可以设置冒泡和捕获
	三.IE事件处理函数
	IE不支持捕获;添加事件不能屏蔽重复的函数;this指向的是window而不是DOM对象;在传统事件上,IE无法接受到event对象。
	学习这部分内容,其实很多东西都是很有共鸣的。但后面的一些事件流,自定义,(添加超链接)IE与W3C间的比较的知识,好像使得学习困难了些,总结的时候也不知道该如何去写,只能是列举出个大概的标题。这些东西,还是需要在实践中去应用。
时间: 2025-01-21 18:59:26

【JavaScript】事件的相关文章

javascript事件列表解说

javascript 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠标时触发此事件 onmouseup IE4.N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3.N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4.N4 鼠标移动时触发此事件 onmouseout IE4.N3 当鼠标离开某对象范围时触发此事件

JavaScript事件列表

javascript javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠标时触发此事件 onmouseup IE4.N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3.N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4.N4 鼠标移动时触发此事件 onmouseout IE4.N3

传统javascript事件模型实现观察者模式

在W3C新的事件模型框架中,IE和Mozilla都实现了相应的版本,IE的是attachEvent和detachEvent来实现元素事件的添加和删除,而Mozilla则是标准的addEventListener和 removeEventListener.在传统的javascript事件模型中,我们没办法为一个页面元素注册多个事件,只有靠自己来实现观察者模式.代码来自<ajax in action>,我添加了注释 //命名空间var jsEvent = new Array(); //构造函数jsE

浅谈javascript事件取消和阻止冒泡

这篇文章主要介绍了浅谈javascript事件取消和阻止冒泡的方法和示例,有需要的小伙伴可以参考下.     取消默认操作 w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false; 在支持addEventListener()的浏览器中,也能通过调用时间对象的preventDefault()方法取消时间的默认操作.不过,在IE9之前的IE中,可以通过设置事件对象的returnValue属性为false来达到同样的效果.下面的代码假设一个事件处理程

JavaScript事件委托实例分析

  本文实例讲述了JavaScript事件委托用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var addEvent = function (elem, eventType, func) { if ( elem.addEventListener ) addEvent = function (elem, eventType, func) { elem.addEventListener(eventTy

javascript事件冒泡实例分析

  本文实例讲述了javascript事件冒泡.分享给大家供大家参考.具体分析如下: 事件冒泡: 如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B的onclick也会被触发, 触发的顺序是"由内而外".验证:在页面上添加一个table,table里有tr,tr里有td,td里放一个p, 在p,td,tr,table中添加事件响应 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <html xmlns="htt

浅谈JavaScript事件的属性列表

  本文向大家简单介绍了javascript事件的属性列表,非常的详细,推荐给有相同需求的小伙伴们. HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为. 属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事件句柄. on

javascript 事件绑定方法与兼容ie ff解决办法

网页特效 事件绑定方法与兼容ie ff解决办法 var t = document.getelementbyid("tab1"); t.onclick = function tst(){ alert(''); } 第二种方法 var tb = document.getelementbyid("tab1"); if(window.addeventlistener){ // mozilla, netscape, firefox td_value.addeventliste

阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)_javascript技巧

cancelBubble在IE下有效 stopPropagation在Firefox下有效 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml

javascript事件冒泡详解和捕获、阻止方法_javascript技巧

一.事件的发生顺序 这个问题的起源非常简单,假设你在一个元素中又嵌套了另一个元素 复制代码 代码如下: ----------------------------------- | element1                        | |   -------------------------     | |   |element2               |     | |   -------------------------     | |