[Javascript] 事件Event
来源:互联网 发布:js 或 编辑:程序博客网 时间:2024/05/21 09:58
HTML和JS之间的行为或者是交互的动作 是事件实现的
(1) 事件流(冒泡 捕获)
几乎Tencent ,Baidu, Meituan等公司校招面试必问的题目
Event bubbling
IE 只有冒泡事件: 从最具体的事件到最不具体的事件
<html><body><div id="wrapper"> <p>jessica krystal</p></div></body></html>/*p->div->body->html*/
Event capturing
除了IE 其他都是有事件捕获: 从最不具体到最具体事件
和bubbling相反
(2) 获取事件 兼容情况
兼容情况
IE和W3C做法不同 所有要兼容两个不同的方法
var event=e|window.event;
var a=document.getElementsByTagName("a")[0]; a.onclick=function(e){ /*这里是兼容的体现*/ var event=e|window.event; /*这里是兼容的体现*/ alert(event); }
W3C和IE的属性和方法
得到事件目标W3C:targetIE : srcElement阻止冒泡W3C: stopPropagation()IE: cancelBubble
<script type="text/javascript"> var a=document.getElementsByTagName("a")[0]; /*兼容事件处理*/ function getTarget(e){ var evt=e||window.event; return evt.srcElement||evt.target; //evt.stopPropogation||evt.cancelBubble;阻止冒泡 } /*兼容事件处理*/ a.onclick=function(e){ console.log(getTarget(e)); }</script>
(3) 处理事件 DOM2
[1] W3C 事件处理
三个参数: (事件名, 函数, true-捕获 false-capture) 函数 eg: onclick onmouseover onmouseout onload..... addEventListener() 增加事件 removeEventListener() 删除事件
var a=document.getElementsByTagName("a")[0]; var fx=function(){ console.log(this); } a.addEventListener('click',fx,false);
[2] IE 事件处理
只有冒泡事件 没有捕获事件(事件名称, 函数)attachEvent()detachEvent()
[3] 兼容处理
<script type="text/javascript"> function addEvent(obj,type,fx){ //W3C if (obj.addEventListener) { obj.addEventListener(type,fx,false);//bubble }else if(obj.addEvent){ //IE obj.addEvent(type,fx);//bubble } }</script>
(4) 事件委托
利用Bubble 冒泡, 只制定一个, 便完成所有的事情
<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li></ul>
<script type="text/javascript">//只定义了Ul 再利用bubble 就可以实现事件委托 var obj=document.getElementsByTagName("ul")[0]; var type='click';/*兼容处理*/ var fx=function(evt){ var evt=evt||window.event; console.log(evt.srcElement||evt.target); }/*兼容处理*/ function addEvent(obj,type,fx){ if (obj.addEventListener) { obj.addEventListener(type,fx,false);//bubble }else if(obj.addEvent){ obj.addEvent(type,fx);//bubble } } addEvent(obj,type,fx);</script>
W3C:
IE:
0 0
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript event 事件解析
- javascript的事件(event)
- 学习javascript-event事件
- [Javascript] 事件Event
- JavaScript事件【event】
- JavaScript event事件
- javascript中event事件详解
- JavaScript中的事件Event对象
- Android下uid与多用户释疑(一)
- muduo源码分析:无界队列和有界队列(消费者-生产者)
- 这7个开源技术支撑起整个互联网时代
- 【签名】4.2.2系统不能安装引出的签名问题
- 上传图片
- [Javascript] 事件Event
- 我的Android进阶之旅------>android Button上面的英文字符串自动大写的问题解决
- 易语言获取当前鼠标的窗口句柄、位置、颜色值
- 无密码自动登录
- UICollectionView可移动item
- Apache和Tomcat的区别
- Android程序反编译、签名详解、打包
- ASP.NET MVC
- SEAndroid策略分析(三):类型强制和角色声明