DOM事件处理程序-事件对象-键盘事件
事件流:
事件流--描述的是从页面中接受事件的顺序
IE ---事件冒泡流:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。
Netscape ---事件捕获流:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。
使用事件处理程序:
1. HTML事件处理程序
<input type="button" value="按钮" id="btn" onclick="alert('hello')"/>
<input type="button" value="按钮" id="btn" onclick="showMessage()"/>
<script>
function showMessages(){
alert('hello world!');
}
</script>
// HTML事件的缺点:
// HTML和JS代码紧密的耦合在一起
2. DOM0级事件处理程序
较传统的方式:把一个函数赋值给一个事件的处理程序属性
(用的比较多的方法 简单 跨浏览器的优势)
<input type="button" value="按钮2" id="btn2"/>
<script>
var btn2 = document.getElementById('btn2'); // 取btn2按钮对象
btn2.onclick = function(){
alert('这是通过DOM0级添加的事件!');
}
btn2.onclick = null; // 删除onclick属性
</script> // 没有HTML事件处理程序的缺点
3. DOM2级事件处理程序
DOM2级事件定义了两个方法:
用于处理指定和删除事件处理程序的操作
addEventListener()和removeEventListner()。
接收三个参数:要处理的事件名、作为事件处理程序的函数和布尔值
<input type="button" value="按钮3" id="btn3"/>
<script>
function showMes(){
alert('hello world !')
}
var btn3 = document.getElementById('btn3');
// 可以在一个按钮上添加多个事件
btn3.addEventListener('click',showMes,false);
btn3.addEventListener('click',function(){
alert(this.value);
},false);
// 删除事件
// btn3.removeEventListener('click',showMes,false);
</script>
4. IE事件处理程序
attachEvent()添加事件
detachEvent()删除事件
接收相同的两个参数:事件处理程序的名称和事件处理程序的函数
(不使用第三个参数的原因:IE8以及更早的浏览器版本只支持事件冒泡!)
<input type="button" value="按钮3" id="btn3" />
<script>
function showMes(){
alert('hello world !');
}
var btn3 = document.getElementById('btn3');
btn3.attachEvent('onclick',showMes);
btn3.detachEvent('onclick',showMes);
</script>
5. 跨浏览器的事件处理程序
<input type="button" value="按钮3" id="btn3" />
<script type="text/javascript">
function showMes(){
alert("hello world!");
}
// 跨浏览事件处理程序
var eventUtil = {
// 添加句柄 怎么给元素添加事件
addHandler:function(element,type,handler){
if(element.addEventListener){ // 判断的是DOM2级
element.addEventListener(type,handler,false);
}else if(element.attachEvent){ // IE事件处理程序判断
element.attachEvent("on" + type,handler);
}else{ // DOM0级处理程序判断
element["on" + type] = handler;
}
},
// 删除句柄 怎么给元素删除事件
removeHandler:function(element,type,handler){
if(element.removeEventListener){ // 判断的是DOM2级
element.removeEventListener(type,handler,false);
}else if(element.tetachEvent){ // IE事件处理程序判断
element.tetachEvent("on" + type,handler);
}else{ // DOM0级处理程序判断
element["on" + type] = null;
}
}
}
eventUtil.addHandler(btn3,'click',showMes);
eventUtil.removeHandler(btn3,'click',showMes);
</script>
事件对象:
什么是事件对象?在触发DOM上的事件时都会产生一个对象
事件对象event
1. DOM中的事件对象
1)type属性 用于获取事件类型
2)target属性 用于获取事件目标
3)stopPropagation()方法 用于阻止事件冒泡
4)preventDefault()方法 阻止事件的默认行为
function showMes(event){
alert(event.type); // click
}
function showMes(event){
alert(event.target); // 这个事件加在什么目标上(那个元素的)
alert(event.target.nodeName); // 目标节点名称
}
2. IE中的事件对象
1)type属性 用于获取事件类型
2)srcElement属性 用于获取事件的目标
3)cancelBubble属性 用于阻止事件冒泡
设置为true表示阻止冒泡 设置false表示不阻止冒泡
4)returnValue属性 用于阻止事件的默认行为
设置为true表示阻止事件的默认行为
function showMes(event){
event = event || window.event; // IE8以前的浏览器需要用window.event
var ele = event.target || event.srcElement;
alert(ele);
}
// 跨浏览事件处理程序
var eventUtil = {
// 怎么获取兼容两个浏览器的事件对象
getEvent:function(event){
return event?event:window.event;
},
// 怎么获取事件的类型
getType:function(event){
return event.type;
},
// 怎么获取事件来自于哪个元素
getElement:function(event){
return event.target || event.srcElement;
},
// 怎么阻止取消事件的默认行为
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
},
// 怎么阻止事件冒泡
stopPropagation:function(event){
if(event.stopPropagation){ // 以属性的方式来判断
event.stopPropagation();
}else{
event.cancelBubble = true;
}
}
}
键盘事件:
keyDown:当用户按下键盘上的任意键时触发,而且如果按住不放的话,会重复触发此事件
keyPress:当用户按下键盘上的字符键时触发,而且如果按住不放的话,会重复触发此事件
keyUp:当用户释放键盘上的键时触发
event对象上的keyCoden属性用于得到键盘对应键的键码值
console.log(event.keyCode); // 打印keyCode属性
DOM事件处理程序-事件对象-键盘事件的更多相关文章
- HTML事件处理程序---内联onclick事件
HTML事件处理程序绑定方法: <input type="button" value="click me" onclick="show(this ...
- Vue学习之--------事件的基本使用、事件修饰符、键盘事件(2022/7/7)
文章目录 1.事件处理 1.1. 事件的基本使用 1.1.1 .基础知识 1.1.2. 代码实例 1.1.3.测试效果 1.2.事件修饰符 1.2.1. 基础知识 1.2.2 .代码实例 1.2.3 ...
- ActionsChains类鼠标事件和Keys类键盘事件
一.鼠标事件 如,移动.点击.释放.单击.右击,拖动等 键盘事件如:输入.回车.粘贴.复制.剪贴等 使用ActionsChains类和Keys类之前都必须先导入 from selenium ...
- js事件处理程序详解,html事件处理程序,dom0级事件处理程序,dom2级事件处理程序
博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/24/js%e4%ba%8b%e4%bb%b6%e5%a4%84%e7%90%86%e ...
- 深入理解DOM事件类型系列第二篇——键盘事件
× 目录 [1]类型 [2]顺序 [3]按键信息[4]应用 前面的话 鼠标和键盘是电脑端主要的输入设备,上篇介绍了鼠标事件,本文将详细介绍键盘事件 类型 键盘事件用来描述键盘行为,主要有keydown ...
- dom事件与event对象总结
1 事件:就是文档或浏览器窗口中发生的一些特定的交互瞬间. tips:js和xhtml的交互是通过当用户或浏览器操作网页时发生的事件来处理的. 1.1 事件流:即事件的顺序. 事件 ...
- JavaScript 事件 事件流 事件对象 事件处理程序 回调函数 error和try...catch和throw
参考资料: 慕课网 DOM事件探秘 js事件对象 处理 事件驱动: JS是采用事件驱动的机制来响应用户操作的,也就是说当用户对某个html元素进行操作的时候,会产生一个时间,该时间会驱动某些函数 ...
- JavaScript Event 事件 事件流 事件对象 事件处理程序 回调函数 error和try...catch和throw
参考资料: 慕课网 DOM事件探秘 js事件对象 处理 事件驱动: JS是采用事件驱动的机制来响应用户操作的,也就是说当用户对某个html元素进行操作的时候,会产生一个事件,该事件会驱动某些函数 ...
- 深入理解DOM事件机制系列第二篇——事件处理程序
× 目录 [1]HTML [2]DOM0级 [3]DOM2级[4]IE[5]总结 前面的话 事件处理程序又叫事件侦听器,实际上就是事件的绑定函数.事件发生时会执行函数中相应代码.事件处理程序有HTML ...
随机推荐
- 3.0:pandas【基础操作】
pandas 是基于numpy构件的强大的数据处理模块,其核心的数据结构有两个:Series 与 DataFrame 一:Series Series 是一种类似于表的东西,拥有索引(index)与其对 ...
- 迟到的tkinter---学校选课刷屏器
今儿上午选修了一门<结构分析与程序设计>,发现是用VB编写结构力学受力图示的一门课,VB高中学过,但是基本已经忘得差不多了,今儿老师让用VB编写了一个计算器,匆忙的百度了一下后就完成了觉得 ...
- ASP.NET 获取IP信息等探针
获取客户端:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]: 获取URL Request.RawUrl:获取客 ...
- XAML 名称范围 (x:) 语言特性
本节介绍为 Windows 运行时实现的 XAML 语言特性的参考信息. 本部分内容 主题 描述 x:Class 属性 配置 XAML 编译,在标记和代码隐藏之间连接分部类.代码分部类在一个独立的代码 ...
- 关于解决方案和web文件夹放在同一目录路径错误的问题
今天公司要做个b2b商城,下了个源码,目的是在这个基础上改,可是源码没有解决方案,于是建立了个解决方案,然后添加网站,发现解决方案和web目录位于不同目录(解决方案总是自动生成一个目录),可是我从网上 ...
- 关于css样式line-height的应用
今天做项目,改一个东西,要求<li>背景</li>,背景下加个下划线,用了背景: #left_menu_tiandi ul li{ width:110px; backgroun ...
- Swift中构造器的继承和重写
import Foundation /* 构造器的继承: Swift的子类不会自动继承父类的构造器, 若继承, 则满足如下规则: 1.如果子类没有提供任何指定构造器, 那么它将自动继承父类的所有指定构 ...
- POJ 1151 - Atlantis 线段树+扫描线..
离散化: 将所有的x轴坐标存在一个数组里..排序.当进入一条线段时..通过二分的方式确定其左右点对应的离散值... 扫描线..可以看成一根平行于x轴的直线..至y=0开始往上扫..直到扫出最后一条平行 ...
- Hadoop学习历程(四、运行一个真正的MapReduce程序)
上次的程序只是操作文件系统,本次运行一个真正的MapReduce程序. 运行的是官方提供的例子程序wordcount,这个例子类似其他程序的hello world. 1. 首先确认启动的正常:运行 s ...
- [转]IBInspectable / IBDesignable
原文:http://www.cocoachina.com/ios/20150227/11202.html 无论陈词滥调多少次,比起一个需要我们记住并且输入什么的界面来说,如果替换成我们能够看见并可控制 ...