`

JavaScript处理事件的一些兼容写法

    博客分类:
  • js
阅读更多
绑定事件
  1. var addEvent = function( obj, type, fn ) {
  2.   if (obj.addEventListener)
  3.       obj.addEventListener( type, fn, false );
  4.   else if (obj.attachEvent) {
  5.       obj["e"+type+fn] = fn;
  6.       obj.attachEvent( "on"+type, function() {
  7.           obj["e"+type+fn]();
  8.       } );
  9.   }
  10. };

另一个实现
  1. var addEvent = (function () {
  2.   if (document.addEventListener) {
  3.       return function (el, type, fn) {
  4.           el.addEventListener(type, fn, false);
  5.       };
  6.   } else {
  7.       return function (el, type, fn) {
  8.           el.attachEvent('on' + type, function () {
  9.               return fn.call(el, window.event);
  10.           });
  11.       }
  12.   }
  13. })();

绑定onpropertychange事件

onpropertychange是微软 制造的一个事件,它在一个元素的属性发生变化的时候触发,常见的有文本的长度改变,样长改变等,FF大致和它相似的属性为oninput事件,不过它只针对textfield与textarea的value属性。safari,firefox,chrome与 opera都支持此属性。
  1. var addPropertyChangeEvent = function (obj,fn) {
  2.   if(window.ActiveXObject){
  3.       obj.onpropertychange = fn;
  4.   }else{
  5.       obj.addEventListener("input",fn,false);
  6.   }
  7. }
复制代码
移除事件
  1. var removeEvent = function( obj, type, fn ) {
  2.   if (obj.removeEventListener)
  3.       obj.removeEventListener( type, fn, false );
  4.   else if (obj.detachEvent) {
  5.       obj.detachEvent( "on"+type, obj["e"+type+fn] );
  6.       obj["e"+type+fn] = null;
  7.   }
  8. };

加载事件
  1. var loadEvent = function(fn) {
  2.   var oldonload = window.onload;
  3.   if (typeof window.onload != 'function') {
  4.       window.onload = fn;
  5.   }else {
  6.       window.onload = function() {
  7.           oldonload();
  8.           fn();
  9.       }
  10.   }
  11. }

阻止事件
  1. var stopEvent = function(e){
  2.     e = e || window.event;
  3.     if(e.preventDefault) {
  4.       e.preventDefault();
  5.       e.stopPropagation();
  6.     }else{
  7.       e.returnValue = false;
  8.       e.cancelBubble = true;
  9.     }
  10.   },

如果仅仅是阻止事件冒泡
  1. var stopPropagation = function(e) {
  2.    e = e || window.event;
  3.   if (!+"\v1") {
  4.      e.cancelBubble = true;      
  5.   } else {
  6.      e.stopPropagation();
  7.   }
  8. }

取得事件源对象

相当于Prototype.js框架的Event.element(e)
  1. var getEvent = function(e){
  2.    e = e || window.event;
  3.   var target = event.srcElement ? event.srcElement : event.target;
  4.   return target
  5. }

或者这个功能更强大,我在开发datagrid时开发出来的,详细用法见《一步步教你实现表格排序(第二部分)》。
  1. var getEvent = function(e) {
  2.  var e = e || window.event;
  3.  if (!e) {
  4.   var c = this.getEvent.caller;
  5.   while (c) {
  6.     e = c.arguments[0];
  7.     if (e && (Event == e.constructor || MouseEvent  == e.constructor)) {
  8.       break;
  9.     }
  10.     c = c.caller;
  11.   }
  12.  }
  13.  var target = e.srcElement ? e.srcElement : e.target,
  14.  currentN = target.nodeName.toLowerCase(),
  15.  parentN  = target.parentNode.nodeName.toLowerCase(),
  16.  grandN = target.parentNode.parentNode.nodeName.toLowerCase();
  17.  return [e,target,currentN,parentN,grandN];
  18. }
分享到:
评论

相关推荐

    javascript 处理事件绑定的一些兼容写法

    本文将详细讲解JavaScript处理事件绑定的一些兼容性写法,适用于不同的浏览器环境。 首先,让我们看一个基本的事件绑定函数的实现。这个函数`addEvent`接受三个参数:目标对象`obj`,事件类型`type`,以及事件处理...

    javascript 编写跨浏览器的javascript兼容写法

    javascript 编写跨浏览器的javascript兼容写法 js兼容

    事件高级用法及兼容写法

    ### 事件高级用法及兼容写法 #### 一、事件基础 1. **事件函数** ```javascript obj.on-事件名 = fn; ``` 定义事件时,事件函数并不会立即执行,只有当触发相应事件时才会执行。 2. **事件对象** 当...

    JavaScript事件机制详细研究

    JavaScript 事件机制详细研究 ...JavaScript 事件机制是非常复杂的,它需要了解事件机制的实现方式、原理和浏览器的兼容性问题。只有深入了解这些知识点,才能编写出高效、可靠的 JavaScript 代码。

    IE、FF的JS兼容写法

    这篇博客文章“IE、FF的JS兼容写法”探讨了如何编写能够同时在IE和FF下运行的兼容性JavaScript代码。 首先,我们需要理解这两个浏览器对于DOM(Document Object Model)操作的处理方式有所不同。例如,IE使用的是`...

    JavaScript应用实例-兼容安卓6、7的写法.js

    JavaScript应用实例-兼容安卓6、7的写法.js

    JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍_.docx

    JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍_.docx

    多款JS软键盘 及 常用JS兼容写法

    总的来说,JS软键盘的实现涉及了JavaScript基础、DOM操作、事件处理、CSS样式和浏览器兼容性等多个方面。通过深入理解这些技术并结合具体应用场景,我们可以创建出满足各种需求的JS软键盘,提供流畅且安全的在线输入...

    详解js几个绕不开的事件兼容写法

    总结来说,JavaScript中的事件兼容性主要包括键盘事件的`keyCode`获取、窗口大小的计算以及DOM事件处理程序的绑定和解绑。通过以上的方法,开发者可以编写出能够在多种浏览器环境下稳定工作的代码,降低因浏览器差异...

    Javascript selection的兼容性写法介绍

    不过,由于不同的浏览器对于selection对象的实现方式并不完全一致,因此在跨浏览器使用时,开发者往往需要采用兼容性写法来确保代码的正常工作。 为了实现这一功能,开发者需要编写能够根据不同浏览器环境自动选择...

    编写跨浏览器的javascript代码必备[js多浏览器兼容写法]

    跨浏览器兼容写法建议使用`document.querySelectorAll`或`document.querySelectorAll`方法,因为这两个方法在现代浏览器中得到了良好支持。 在IE 6及更早版本中,`obj.getAttribute`可以用来访问元素的固有属性和...

    JavaScript中点击事件的写法

    在JavaScript中,点击事件是网页交互中的重要...选择哪种方法取决于项目需求,比如是否需要兼容旧版浏览器,或者是否需要更复杂的事件处理逻辑。理解这些基本概念和用法,将有助于创建更加互动和响应式的Web应用程序。

    JS事件添加和移出的兼容写法示例

    由于不同浏览器对事件监听的实现有所不同,这就需要我们编写兼容不同浏览器的事件处理代码。接下来,我们将详细解析有关事件添加和移除的兼容写法,并通过代码示例加以说明。 首先,事件添加的兼容写法通常涉及以下...

    获取css样式 兼容写法

    总之,获取CSS样式时的兼容性问题需要开发者对不同浏览器的特点有深入理解,并采取相应的技术手段进行处理。通过使用正确的JavaScript方法和充分考虑CSS前缀,可以确保我们的样式在各种环境下都能正确显示。

    JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结

    本文主要针对JavaScript在IE和Firefox两种浏览器下的兼容性问题进行了分析,并总结了七个关键差异的兼容写法。 1. CSS “float”值的访问差异 在JavaScript中,我们可以使用“object.style.property”句法来访问和...

    javascript的IE和Firefox兼容性汇编

    - **解决方法**:在 MF 中,事件对象可以通过事件处理函数的第一个参数获得,而不能通过 `window.event` 获取。例如,在 IE 中通常这样写:`function myFunction(event) { event = event || window.event; }`。 ###...

    IE和Firefox下javascript的兼容写法小结

    以下是关于IE和Firefox下JavaScript兼容写法的一些关键点: 1. **ID属性与Name属性**:在IE中,`<input>`标签的ID属性默认与Name属性相同,因此可以不显式声明ID就能通过`getElementById`找到元素。然而,Firefox...

    JAVASCRIPT IE 与 FF 中兼容写法记录

    为了实现JavaScript代码在Internet Explorer(IE)和Mozilla Firefox(FF)两大浏览器中的兼容性,开发者们需要了解两种浏览器在DOM操作、事件处理、CSS属性以及JavaScript对象和属性上的差异性。以下是一些关键知识...

    谈谈JavaScript中浏览器兼容问题的写法小议

    本文将探讨一些JavaScript中处理浏览器兼容问题的常见策略。 首先,我们来看如何获取浏览器窗口的大小。在现代浏览器如IE9+、Chrome、Firefox、Opera和Safari中,可以使用`window.innerHeight`和`window.innerWidth...

Global site tag (gtag.js) - Google Analytics