Events适配器
来源:互联网 发布:nginx代理tomcat配置 编辑:程序博客网 时间:2024/05/16 00:27
var fix = function(event) { var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget "+"data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY "+"prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement"+" view wheelDelta which".split(" "); // 存储原始事件对象的副本 // 和“clone”,设置只读属性 var originalEvent = event; event = { originalEvent: originalEvent }; for (var i = props.length, prop; i;) { prop = props[--i]; event[prop] = originalEvent[prop]; } //添加的preventDefault 取消事件的默认动作。和stopPropagation,停止事件的传播 因为它们不会在工作 在 克隆 的event event.preventDefault = function() { if (this.originalEvent.preventDefault) this.originalEvent.preventDefault(); this.originalEvent.returnValue = false; }; event.stopPropagation = function() { if (this.originalEvent.stopPropagation) this.originalEvent.stopPropagation(); //原始事件的cancelBubble属性设置为true(IE) this.originalEvent.cancelBubble = true; }; event.timeStamp = event.timeStamp || +new Date // 如果有必要,修复target属性, if (!event.target) { event.target = event.srcElement || document; } // 检查target是否为 textnode 节点(safari) if (event.target.nodeType === 3) { event.target = event.target.parentNode; } // relatedTarget 返回指针刚刚离开的元素(不支持 IE)。fromElement 支持 IE if (!event.relatedTarget && event.fromElement) { event.relatedTarget = event.fromElement === event.target ? event.toElement: event.fromElement; } // 计算pageX/ y, 如果没有,clientX/ Y提供 if (event.pageX == null && event.clientX != null) { var doc = document.documentElement, body = document.body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); } // Add which for key events if (event.which == null && (event.charCode != null || event.keyCode != null)) { event.which = event.charCode != null ? event.charCode: event.keyCode; } // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) if (!event.metaKey && event.ctrlKey) { event.metaKey = event.ctrlKey; } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if (!event.which && event.button !== undefined) { event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0))); } return event;}document.onclick=getE;function getE(e){ e=fix(e); alert(e.pageX);}//IEdocument.onclick= function (){ e=fix(event); alert(e.pageX);}
0 0
- Events适配器
- Events适配器
- Events适配器
- EVENTS
- Events
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 适配器
- 串口通信的心得
- Linxu下的串口编程
- Linxu下的串口编程
- Events事件传播测试实例
- Events事件传播测试实例
- Events适配器
- Events适配器
- [解决]XP系统的日文输入法无法打出日语汉字
- [解决]XP系统的日文输入法无法打出日语汉字
- 门面模式(Facade)----结构笔记
- 门面模式(Facade)----结构笔记
- Java----Collections的Sort排序小测试
- Java----Collections的Sort排序小测试
- 多人联机射击游戏中的设计模式应用(一)