JavaScript的事件对象
来源:互联网 发布:什么是linux内核 编辑:程序博客网 时间:2024/05/22 10:24
事件对象,每个事件(包括鼠标、键盘事件)触发执行的过程中,都有对应的事件对象,通过事件对象可以获得鼠标相对页面的坐标信息、通过事件对象也可以感知什么键子被 触发执行、通过事件对象还可以阻止事件流产生、阻止浏览器默认动作。
1、获得事件对象
获得:
①主流浏览器(IE9以上版本浏览器):
node.onclick = function(evt){evt就是事件对象}
addEventListener(类型,function(evt){}/函数名字);
function 函数名称(evt){}
事件处理函数的第一个形参就是事件对象
② IE(6/7/8)浏览器
node.onclick = function(){window.event事件对象}
全局变量event就是事件对象
<body> <h2>事件流</h2> <div> 操作事件对象 </div></body></html><script type="text/javascript"> //形参evt代表事件对象 function clk(evt) { //console.log(evt); var evnt = evt ? evt : window.event; //兼容事件对象获取 this.style.backgroundColor = "green"; } var dv = document.getElementsByTagName('div')[0]; dv.addEventListener('click', clk);</script>效果图:
2、事件对象作用
(1)获得鼠标信息
event.clientX/clientY; //相对dom区域坐标
event.pageX/pageY; //相对dom区域坐标,给考虑滚动条位置
event.screenX/screenY; //相对屏幕坐标
<body> <h2>事件流</h2> <div> 操作事件对象 </div></body></html><script type="text/javascript"> //形参evt代表事件对象 function clk(evt) { var evnt = evt ? evt : window.event; //兼容事件对象获取 console.log(evnt.clientX + "--" + evnt.clientY); console.log(evnt.pageX + "--" + evnt.pageY); //考虑滚动条的长度 console.log(evnt.screenX + "--" + evnt.screenY) //关于电脑屏幕的位置 } var dv = document.getElementsByTagName('div')[0]; dv.addEventListener('click', clk);</script>效果图:
(2)阻止事件流
event.stopPropagation(); //主流浏览器
event.cancelBubble = true; // IE浏览器
冒泡型、捕捉型都可以进行阻止,为了浏览器兼容处理,只考虑冒泡型。
<body> <h2>事件流</h2> <div> <p> <span>I am span</span> </p> </div></body></html><script type="text/javascript"> var dv = document.getElementsByTagName('div')[0]; var pp = document.getElementsByTagName('p')[0]; var sp = document.getElementsByTagName('span')[0]; //addEventListener(类型, 处理, true捕捉/false冒泡) sp.addEventListener('click', function (evt) { console.log('span tag'); evt.stopPropagation(); //阻止事件流产生 }, false); pp.addEventListener('click', function (evt) { console.log('p tag'); evt.stopPropagation(); //阻止事件流产生 }, false) dv.addEventListener('click', function (evt) { console.log('div tag'); evt.stopPropagation(); //阻止事件流产生 }, false)</script>效果图:
(3)阻止浏览器默认动作
浏览器默认动作,注册form表单页面,提交表单的时候,浏览器的页面会根据action属性值进行跳转,这个动作称为“浏览器默认动作”。
event.preventDefault(); //主流浏览器
event.returnValue = false; //IE浏览器
return false; //dom1级事件设置起作用
<body> <h2>事件对象阻止浏览器默认动作(form表单提交动作)</h2> <form action="21.php" method="post"> <p>用户名<input type="text" name="username" ></p> <p>密码<input type="password" name="userpwd" ></p> <p>邮箱<input type="text" name="useremail" ></p> <p><input type="submit" value="注册"></p> </form></body></html><script type="text/javascript"> var fm = document.getElementsByTagName('form')[0]; fm.addEventListener('submit', function (evt) { alert('邮箱格式不正确'); //return false; //dom1事件的阻止form表单提交 evt.preventDefault(); //dom2级事件的阻止foem表单提交 });</script>
(4)感知被触发键盘键子信息
event.keyCode 获得键盘对应的键值码信息
通过事件触发时候获得的keyCode数值码信息可以对应键盘的键子信息。
<body> <h2>事件对象阻止浏览器默认动作(form表单提交动作)</h2> <p>用户名<input type="text" name="username" id="username" ></p> <p>密码<input type="password" name="userpwd" ></p> <p>邮箱<input type="text" name="useremail" ></p> <p><input type="submit" value="注册"></p></body></html><script type="text/javascript"> var username = document.getElementById('username'); username.addEventListener('keyup', function (evt) { //感知被触发键盘信息 var num = evt.keyCode; if(num == 37){ console.log('左'); } else if(num == 38){ console.log('上'); } else if(num == 39){ console.log('右'); } else if(num == 40){ console.log('下'); } });</script>效果图:
(5)什么是加载事件
js代码执行时候,需要html&css的支持,就让html先执行(先进入内存),js代码后执行
js代码在最后执行的过程就是“加载过程”,通常通过“加载事件”实现加载过程
具体设置:
<body onload=”加载函数()”>
window.onload = 匿名/有名函数; //推荐
第一种加载方式:
<html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function jiazai() { var dv = document.getElementsByTagName('div')[0]; dv.onclick = function () { this.style.backgroundColor = "pink"; } } </script> <style type="text/css"> div {width: 300px; height: 200px; background: lightblue;} </style></head><body onload="jiazai()"> <h2>加载事件</h2> <div> 操作加载事件 </div></body></html>效果图:
第二种加载方式:
<html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function jiazai() { var dv = document.getElementsByTagName('div')[0]; dv.onclick = function () { this.style.backgroundColor = "pink"; } } window.onload = jiazai; </script> <style type="text/css"> div {width: 300px; height: 200px; background: lightblue;} </style></head><body> <h2>加载事件</h2> <div> 操作加载事件 </div></body></html>效果图:
第三种:匿名灵活使用
<html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function jiazai() { var dv = document.getElementsByTagName('div')[0]; dv.onclick = function () { this.style.backgroundColor = "pink"; } } function f1() { console.log('加载中...'); } window.onload = jiazai; window.onload = function () { jiazai(); f1(); } </script> <style type="text/css"> div {width: 300px; height: 200px; background: lightblue;} </style></head><body> <h2>加载事件</h2> <div> 操作加载事件 </div></body></html>效果图:
- JavaScript事件的对象
- JavaScript的事件对象
- JavaScript事件对象的介绍
- 说说 JavaScript 的事件对象
- javascript的Document对象——事件
- JavaScript的事件机制event对象
- javascript事件;event对象的属性
- javascript事件;event对象的属性
- javascript中获取触发事件的对象
- JavaScript 基于对象事件的 AOP 实现
- javascript如何获取触发事件的对象
- javascript获取事件触发的对象
- JavaScript获取事件对象的注意点
- JavaScript实现自定义对象的自定义事件
- JavaScript 阻止DOM对象的所有事件
- 浅谈JavaScript的事件对象event
- 【JavaScript学习】事件:事件对象
- JavaScript事件对象
- 为什么zookeeper集群中节点配置个数是奇数个?
- Tensorflow一些常用基本概念与函数(1)
- git文件没有绿色红色小图标
- 素数问题——Meisell-Lehmer算法
- POJ
- JavaScript的事件对象
- liunx命令
- 棋牌APP从开发到运营,要在哪些地方花钱?
- mavenSSM整合实现HelloWorld
- 搭建DHCP服务器
- 题目243-交换输出
- Scrapy模拟表单登录
- tomcat further occurrences of HTTP header parsing errors will be logged at DEBUG level.
- LDAP 安装部署(六)