`
孙健坤
  • 浏览: 42268 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用attachEvent和addEventListener区分浏览器是火狐还是IE

阅读更多
之前一直使用检查navigator.userAgent字符串来判断浏览器类型
switch(navigator.userAgent.toLowerCase().indexOf("msie"))//firefox|opera|safari|msie
{
    case(-1):
        alert("DOM浏览器");
    default:
        alert("IE浏览器");
}

今天在看一篇文章中提到用户在某些浏览器可以更改userAgent,这样就不能单纯使用这个方法来检查浏览器。在实际使用中一般检查最多的是ie浏览器与标准dom浏览器的区别,这样可以使用window.addEventListener来判断这两种类型的浏览器
if(typeof window.addEventListener==="function"){
    alert("DOM浏览器");
}else{
    alert("IE");
}


高手写的一个检测浏览器的代码
var isIE = !!(window.attachEvent && !window.opera);

var isOpera = !!window.opera;

var isSafari = navigator.userAgent.indexOf(’AppleWebKit/’) > -1;

var isMoz = navigator.userAgent.indexOf(’Gecko’) > -1 && navigator.userAgent.indexOf(’KHTML’) == -1;

var isMobileSafari = !!navigator.userAgent.match(/Apple.*Mobile.*Safari/);


var isIE5 = (navigator.appVersion.indexOf("MSIE 5")>0) || (navigator.appVersion.indexOf("MSIE")>0 && parseInt(navigator.appVersion)> 4);

var isIE55 = (navigator.appVersion.indexOf("MSIE 5.5")>0);

var isIE6 = (navigator.appVersion.indexOf("MSIE 6")>0);

var isIE7 = (navigator.appVersion.indexOf("MSIE 7")>0);


var isIE8 = (navigator.appVersion.indexOf("MSIE 8")>0);


attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)



addEventListener方法 用于 Mozilla系列



举例:

document.getElementById("btn").onclick = method1;

document.getElementById("btn").onclick = method2;

document.getElementById("btn").onclick = method3;


如果这样写,那么将会只有medhot3被执行

写成这样:

var btn1Obj = document.getElementById("btn1"); 

//object.attachEvent(event,function);

btn1Obj.attachEvent("onclick",method1);

btn1Obj.attachEvent("onclick",method2);

btn1Obj.attachEvent("onclick",method3);


执行顺序为method3->method2->method1


如果是Mozilla系列,并不支持该方法,需要用到addEventListener

var btn1Obj = document.getElementById("btn1");

//element.addEventListener(type,listener,useCapture);

btn1Obj.addEventListener("click",method1,false);

btn1Obj.addEventListener("click",method2,false);

btn1Obj.addEventListener("click",method3,false);


执行顺序为method1->method2->method3


使用实例:

1。

var el = EDITFORM_DOCUMENT.body; 

//先取得对象,EDITFORM_DOCUMENT实为一个iframe

if (el.addEventListener)...{

 el.addEventListener('click', KindDisableMenu, false);

} else if (el.attachEvent)...{

 el.attachEvent('onclick', KindDisableMenu);

}


2。

if (window.addEventListener) ...{

 window.addEventListener('load', _uCO, false);

} else if (window.attachEvent) ...{

 window.attachEvent('onload', _uCO);

}

分享到:
评论

相关推荐

    attachEvent和addEventListener 使用方法

    在JavaScript中,`attachEvent` 和 `addEventListener` 是两种用于为元素添加事件处理程序的方法,主要在Internet Explorer和非IE浏览器(遵循W3C标准)中使用。它们都是用来监听和响应用户或浏览器的特定行为,如...

    浏览器兼容(支持IE和firefox)

    8. **事件处理**:IE使用`attachEvent`,非IE浏览器使用`addEventListener`,需要封装函数来统一处理。 9. **JavaScript变量声明**:IE6在函数作用域内未声明的变量会自动提升到全局,其他浏览器则会抛出错误,应...

    Firefox和IE兼容参考

    - `document.createElement`创建的元素,其事件处理函数绑定方式在Firefox和IE上有所不同,需使用`addEventListener`和`attachEvent`。 - `window.onload`事件处理在两个浏览器中执行时机有差异,可以使用`...

    javascript attachEvent和addEventListener使用方法

    attachEvent与addEventListener区别适应的浏览器版本不同,同时在使用的过程中要注意

    IE与Firefox的事件区别

    而在Firefox及支持DOM的浏览器中,使用`addEventListener`和`removeEventListener`方法,如下所示: ```javascript var obj = document.getElementById("id"); var fnClick = function() { alert("ss"); }; var ...

    Firefox IE兼容教程

    2. **盒模型差异**:IE使用的是"怪异盒模型",将边框和内填充包含在元素的总宽度和高度中,而Firefox和其他遵循W3C标准的浏览器使用"正常盒模型",边框和内填充是额外添加的。这会导致元素尺寸计算上的不一致,需要...

    IE和Firefox对JavaScript的兼容

    在处理事件监听器时,IE使用attachEvent,Firefox使用addEventListener。 再者,CSS样式和JavaScript的交互在IE和Firefox上也有区别。IE有时会忽视标准的style属性,而是使用专有的currentStyle属性来获取元素的...

    IE和Firefox的Javascript兼容性总结[定义].pdf

    - `addEventListener`和`attachEvent`:IE使用`attachEvent`,其他标准浏览器使用`addEventListener`。需要分别处理。 4. **事件处理**: - 事件注册:IE使用`attachEvent`,非IE浏览器使用`addEventListener`。...

    Javascript的IE和Firefox兼容性问题集合

    1. **事件处理**:IE使用attachEvent方法添加事件监听器,而Firefox则使用addEventListener。为确保兼容,可以创建一个跨浏览器的事件处理函数,如: ```javascript function addEvent(element, event, handler) { ...

    difference between IE and Firefox

    - 在事件处理上,IE使用attachEvent,Firefox使用addEventListener,需要编写不同的事件绑定代码。 6. **错误处理**: - IE中的`try...catch`语句在捕获错误时可能会返回更少的详细信息,而Firefox通常提供更丰富...

    Javascript在IE和FireFox中的不同表现

    - IE使用`XMLHttpRequest`的`createRequest`方法,而Firefox和其他标准浏览器直接创建`XMLHttpRequest`实例。 - IE的`onreadystatechange`事件在某些情况下处理方式与Firefox不同。 7. **定时器**: - `...

    addEventListener和attachEvent二者绑定的执行函数中的this不相同

    `addEventListener`是W3C标准的一部分,被大多数现代浏览器支持,包括Firefox和Chrome,而`attachEvent`是Internet Explorer特有的非标准方法。 在事件处理函数中,`this`通常指的是事件发生时的当前目标元素,即...

    Javascript在IE和FireFox中的兼容处理

    - IE使用`event.clientX`和`event.clientY`,Firefox使用`event.pageX`和`event.pageY`。可以使用`event.clientX + document.body.scrollLeft`和`event.clientY + document.body.scrollTop`来兼容。 7. **event的...

    js在火狐和IE浏览器的差异.zip

    - 在事件处理上,Firefox倾向于使用`addEventListener()`和`removeEventListener()`,而IE则使用`attachEvent()`和`detachEvent()`。 2. **BOM对象差异**: - 浏览器的Browser Object Model(BOM)中,如`window`...

    javascript和css在IE和Firefox中的不同点及解决兼容性的方案

    JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...

    DOM文档和Javascript的IE和Firefox兼容性

    IE早期版本使用`attachEvent`和`detachEvent`,而Firefox等其他浏览器使用`addEventListener`和`removeEventListener`。开发者需注意这两种方式的互换。 3. **CSS选择器支持**:JavaScript可以通过`querySelector`...

    Firefox浏览器兼容JS脚本供参考

    使用`attachEvent`是IE的事件绑定方式,而Firefox使用`addEventListener`。`addEvent()`函数封装了这两种方法,使得可以在任何浏览器上添加事件监听器。 5. **Firefox 注册innerText** Firefox不支持innerText...

    兼容360、FireFox、Chrome、Opera、傲游、搜狗、世界之窗各个浏览器的弹窗js代码

    本文将深入探讨如何使用JavaScript(js)编写兼容360、Firefox、Chrome、Opera、傲游、搜狗和世界之窗等主流浏览器的弹窗代码,以及为何不支持Safari和IE8及以下版本的浏览器。 首先,我们了解JavaScript弹窗的基本...

    BlueBala » 兼容IE和Firefox的事件模型(拖动)

    而Firefox和其他基于W3C标准的浏览器则使用`addEventListener`和`removeEventListener`方法来处理事件绑定。 拖动功能在网页中通常涉及鼠标按下、移动和释放等事件。在IE中,我们可以通过`onmousedown`、`...

    JS在IE和FF下attachEvent,addEventListener学习笔记

    对象名.addEventListener(“事件名(不带ON)”,函数名,true/false);(FF下) 对象名.attachEvent(“事件名”,函数名);(IE下) 说明: 事件名称,要注意的是”onclick”要改为”click”,”onblur”要改为”blur”,也...

Global site tag (gtag.js) - Google Analytics