【JavaScript】事件-阿里云开发者社区

开发者社区> leanring> 正文

【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间的比较的知识,好像使得学习困难了些,总结的时候也不知道该如何去写,只能是列举出个大概的标题。这些东西,还是需要在实践中去应用。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10099 0
javascript 监听事件
OnSuccessToRegister();    function OnSuccessToRegister() {        AddToStatusLogList("Registered successfully.");    }
588 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10888 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13897 0
javascript练习题-事件
  前端javascript练习题-事件  键盘控制div移动如果需要在页面中移动,要将元素脱离文档流(否则会影响页面布局) js实现代码: var odiv=document.getElementsByTagName("div")[0]; document.
536 0
+关注
100
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载