通用事件侦听器函数代码
2017-07-17 20:29
253 查看
面试问题:写一个通用的事件侦听器函数。
Event = { //页面加载完成后 readyEvent: function(fn) { if (fn == null) { fn = document; } var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = fn; }else{ window.onload = function() { oldonload(); fn(); }; } }, //视能力分别使用 demo0 || demo1 || IE 方式来绑定事件 //参数:操作的元素,事件名称,事件处理程序 addEvent: function(element,type,handler) { if (element.addEventListener) { //事件类型、需要执行的函数、是否捕捉 element.addEventListener(type,handler,false); }else if (element.attachEvent) { element.attachEvent('on' + type, function() { handler.call(element); }); }else { element['on' + type] = handler; } }, //移除事件 removeEvent: function(element,type,handler) { if (element.removeEventListener) { element.removeEventListener(type,handler,false); }else if (element.datachEvent) { element.datachEvent('on' + type,handler); }else{ element['on' + type] = null; } }, //阻止事件(主要是事件冒泡,因为IE不支持事件捕获) stopPropagation: function(ev) { if (ev.stopPropagation) { ev.stopPropagation(); }else { ev.cancelBubble = true; } }, //取消事件的默认行为 preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); }else{ event.returnValue = false; } }, //获取事件目标 getTarget: function(event) { return event.target || event.srcElemnt; }, //获取event对象的引用,取到事件的所有信息,确保随时能使用event; getEvent: function(e) { var ev = e || window.event; if (!ev) { var c = this.getEvent.caller; while(c) { ev = c.argument[0]; if (ev && Event == ev.constructor) { break; } c = c.caller; } } retrun ev; } };
相关文章推荐
- Java程序员面试中的多线程问题总结
- 70个经典的 Shell 脚本面试问题
- Mybatis3.4.x技术内幕(二十三):Mybatis面试问题集锦(大结局)
- JavaScript之事件绑定
- HandleEvent
- cocos2dx事件监听器
- JavaScript常见基础问题汇总
- Android开发:CompoundButton.onCheckedChangeListener和RadioGroup.onCheckedChangeListener冲突问题
- HashMap的工作原理
- 用OC实现一个类似java的事件监听机制
- CVTE 2017春季校招技术类面试问题
- java常见问题
- Android事件处理
- 事件监听器
- java中添加按钮并添加响应事件
- 如果我再次被面试,我会问的几个问题
- 补充面试题(一)
- 140个Google面试问题
- Java——如果我面试别人,可能会用的问题(如果面试,可能被问的问题)
- 面试问题及回答技巧