原文:javascript中event汇总

ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处引用的是javascript中的event兼容处理代码。

  1. var EventUtil = {//在这里我们用一个对象来将对event的各种兼容处理封装起来
  2. //首先是对绑定事件的兼容
  3. addHandler: function(element, type, handler){
  4. if (element.addEventListener){
  5. //DOM2级处理绑定事件方法
  6. element.addEventListener(type, handler, false);
  7. } else if (element.attachEvent){
  8. //IE绑定方法
  9. element.attachEvent("on" + type, handler);
  10. } else {
  11. //DOM0级处理方法(可选,仅支持DOM0级的浏览器似乎已经不存在了)
  12. element["on" + type] = handler;
  13. }
  14. },
  15. //鼠标按钮的兼容处理
  16. getButton: function(event){
  17. if (document.implementation.hasFeature("MouseEvents", "2.0")){//首先检查是否是DOM标准
  18. return event.button;
  19. } else {
  20. //对IE向DOM兼容
  21. switch(event.button){
  22. case 0:
  23. case 1:
  24. case 3:
  25. case 5:
  26. case 7:
  27. return 0;
  28. case 2:
  29. case 6:
  30. return 2;
  31. case 4: return 1;
  32. }
  33. }
  34. },
  35. //获取字符编码
  36. getCharCode: function(event){
  37. if (typeof event.charCode == "number"){
  38. return event.charCode;
  39. } else {//IE8之前和opera 需要使用keyCode获取字符编码
  40. return event.keyCode;
  41. }
  42. },
  43. //剪切板的访问
  44. getClipboardText: function(event){
  45. var clipboardData = (event.clipboardData || window.clipboardData);
  46. return clipboardData.getData("text");
  47. },
  48. //得到事件对象
  49. getEvent: function(event){
  50. return event ? event : window.event;
  51. },
  52. //得到相关元素
  53. getRelatedTarget: function(event){
  54. if (event.relatedTarget){
  55. return event.relatedTarget;
  56. } else if (event.toElement){
  57. return event.toElement;
  58. } else if (event.fromElement){
  59. return event.fromElement;
  60. } else {
  61. return null;
  62. }
  63.  
  64. },
  65. //得到事件目标
  66. getTarget: function(event){
  67. return event.target || event.srcElement;
  68. },
  69. //对滑轮事件进行兼容
  70. getWheelDelta: function(event){
  71. if (event.wheelDelta){
  72. return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
  73. } else {
  74. return -event.detail * 40;
  75. }
  76. },
  77. //阻止默认事件
  78. preventDefault: function(event){
  79. if (event.preventDefault){
  80. event.preventDefault();
  81. } else {
  82. event.returnValue = false;
  83. }
  84. },
  85. //移除事件
  86. removeHandler: function(element, type, handler){
  87. if (element.removeEventListener){
  88. element.removeEventListener(type, handler, false);
  89. } else if (element.detachEvent){
  90. element.detachEvent("on" + type, handler);
  91. } else {
  92. element["on" + type] = null;
  93. }
  94. },
  95. //设置剪切板内容
  96. setClipboardText: function(event, value){
  97. if (event.clipboardData){
  98. event.clipboardData.setData("text/plain", value);
  99. } else if (window.clipboardData){
  100. window.clipboardData.setData("text", value);
  101. }
  102. },
  103. //阻止事件冒泡
  104. stopPropagation: function(event){
  105. if (event.stopPropagation){
  106. event.stopPropagation();
  107. } else {
  108. event.cancelBubble = true;
  109. }
  110. }
  111.  
  112. };

此处添加的事件尚不完全,有待扩充。这里引用的是《javascript高级程序设计》中的实例。

javascript中event汇总的更多相关文章

  1. (转)javascript中event对象详解

    原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解          博客分类: javaScript JavaScriptCS ...

  2. js防止回车(enter)键提交表单及javascript中event.keycode

      如何防止回车(enter)键提交表单,其实很简单,就一句话.onkeydown="if(event.keyCode==13)return false;"把这句写在from标签里 ...

  3. javascript 中event是全局变量

    The only thing I can think of is that event is in fact window.event and it makes itself available wh ...

  4. Javascript中event.srcElement和event.target的区别

    event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称.注意获取的标记都以大写表示,如"TD",&qu ...

  5. javascript中event.clientX和event.clientY用法的注意事项

    今天做项目用到了event.clientX和event.clientY,给元素定位,用定位的时候,让top和left等于事件元素的的坐标 <!DOCTYPE html> <html& ...

  6. 【好文收藏】javascript中event对象详解

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  7. javascript中event.keycode大全

    keycode 8 = BackSpace BackSpace  keycode 9 = Tab Tab  keycode 12 = Clear  keycode 13 = Enter  keycod ...

  8. 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();

    原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...

  9. 在javascript中的浏览器兼容问题以及兼容浏览器汇总(默认事件,阻止冒泡,事件监听。。。)以及解决方式详解

    在javascript中常见的浏览器兼容问题,以及解决方式. 在前端工作当中我们遵循这样的原则:渐进增强和优雅降级   渐进增强(progressive enhancement): 针对低版本浏览器进 ...

随机推荐

  1. VS2012 编译程序时报无法载入PDB文件错误解决方式

    VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...

  2. C++习题 商品销售

    Description 商店销售某一商品,每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠.现已知当天 ...

  3. [LeetCode145]Binary Tree Postorder Traversal

    题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...

  4. JAVA实现DAO基本层CRUD操作

    随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项 ...

  5. zoj 1738 - Lagrange&#39;s Four-Square Theorem

    称号:四方形定理.输出可以表示为一个数目不超过四个平方和表示的数. 分析:dp,完全背包.背包分割整数.可用一维分数计算,它也可以被写为一个二维团结. 状态:设f(i,j,k)为前i个数字,取j个数字 ...

  6. Win7设置局域网共享

    Win7设置局域网共享 1. 把win7的guest用户开启. 打开win7的控制面板=>用户账号与安全=>用户账户=>管理其他用户=>点击guest用户,进行开启. 2.解决 ...

  7. spring集成quartz

    spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframe ...

  8. linux下磁盘进行分区、文件系统创建、挂载和卸载(转)

    任务的原因:由于,刚购买来的服务器需要将磁盘挂载到操作系统上,为了挂载磁盘首先要对磁盘进行分区,然后进行文件系统的创建,最后将磁盘挂载到操作系统上的某个目录. MBR(Master Boot Reco ...

  9. 第一章 工欲善其事 其利润—Android SDK工具(2)

    1.2设备管理工具-调试桥(ADB) 1.2.1ADB简单介绍 ADB全称是Android Debug Bridge,是Android SDK里自带的一个工具,用这个工具能够直接操作管理Android ...

  10. [MySQL]--&gt;询5 几天之内解决在新年发行一个同事的生日过程

    前言:        遇到朋友提问,例如以下:SELECT * FROM ali_users WHERE  DATEDIFF(CAST(CONCAT(DATE_FORMAT(NOW(),'%y'),D ...