javascript高级程序设计---事件类eventUntil
2015-07-16 17:26
633 查看
var eventUntil = { /** * 兼容IE和其他浏览器的事件添加方法, * @param {[object]} element [元素对象] * @param {[string]} type [事件类型 click等] * @param {[function]} handler [操作函数] */ addHandler: function(element, type, handler) { // 标准方法 if (element.addEventListener) { // false表示冒泡 element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, handler); } else { // Dom0级事件 element['on' + type] = handler; } }, removeHandler: function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler); } else if (element.detachEvent) { element.detachEvent('on' + type, handler); } else { // Dom0级移除事件 element['on' + type] == null; } }, // 获取事件IE和w3c的不同 getEvent: function(event) { return event ? event : window.event; }, // 事件的目标,就是指点在哪里 getTarget: function(event) { return event.target || event.srcElement; }, preventDefault: function(event) { if (event.preventDefault) { // 阻止默认行为 event.preventDefault(); } else { // IE阻止默认行为 event.returnValue = false; } }, stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { // IE取消冒泡 event.cancelBubble = true; } }, // 已经兼容了IE8和以下浏览器 getPageX: function(event) { var pagex = 0; if (event.pageX === undefined) { pagex = event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft); } else { pagex = event.pageX; } return pagex; }, getPageY: function(event) { var pagey = 0; if (event.pageY === undefined) { pagey = event.clientY + (document.documentElement.scrollTop || document.body.scrollTop); } else { pagey = event.pageY; } return pagey; }, getRelatedTarget: function(event) { if (event.relatedTarget) { return event.relatedTarget; } else if (event.toElement) { return event.toElement; } else if (event.fromElement) { return event.fromElement; } else { return null; } }, getButton: function(event) { // IE和其他浏览器都有button属性 if (document.implementation.hasFeature('MouseEvent', '2.0')) { // 0,1,2分别是左中右鼠标键 return event.button; } else { switch (event.button) { /*合并操作*/ // IE中的 case 0: case 1: case 3: case 5: case 7: return 0; case 2: case 6: return 2; case 4: return 1; } } }, getWheelDelta: function(event) { // 向上滚蛋为+120,向下滚动为-120 if (event.wheelDelta) { // IE和其他浏览器支持mousewheel事件 return (client.engine.opera && client.engine.opera < 9.5) ? -event.wheelDelta : event.wheelDelta; } else { // 火狐支持一个DOMMouseScroll事件 return -event.detail * 40; 4000 } }, getCharCode: function(event) { if (typeof event.charCode == 'number') { return event.charCode; } else { return event.keyCode; } } }; //实例 document.onclick = function(event) { var e = eventUntil.getEvent(event); alert(eventUntil.getPageX(event) + ' ' + eventUntil.getPageY(event)); } var mouse = document.getElementById('mouseover'); eventUntil.addHandler(mouse, 'mouseover', function(event) { var event = eventUntil.getEvent(event); var related = eventUntil.getRelatedTarget(event); alert(related); }); eventUntil.addHandler(mouse, 'mouseout', function(event) { var event = eventUntil.getEvent(event); var related = eventUntil.getRelatedTarget(event); alert(related); }); eventUntil.addHandler(document, 'click', function(event) { var event = eventUntil.getEvent(event); var btnValue = eventUntil.getButton(event); eventUntil.preventDefault(event); switch (btnValue) { case 0: alert('左键'); break; case 1: alert('中键'); break; case 2: alert('右键'); break; } }); eventUntil.addHandler(document, 'mousewheel', function(event) { var event = eventUntil.getEvent(event); alert(event.wheelDelta); }); eventUntil.addHandler(window, 'DOMMouseScroll', function(event) { var event = eventUntil.getEvent(event); var detail = eventUntil.getWheelDelta(event); alert(detail); }); eventUntil.addHandler(document.getElementById('keypress'), 'keypress', function(event) { var event = eventUntil.getEvent(event); var charcode = eventUntil.getCharCode(event); alert(charcode); }); eventUntil.addHandler(window, 'scroll', function(event) { // 表示标准模式 if (document.compatMode == 'CSS1Compat') { document.documentElement.scrollTop = '200'; } else { alert(document.body.scrollLeft); } });
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- jQuery中的常用事件总结
- C#实现WinForm捕获最小化事件的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接