之前一直使用检查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);
}
分享到:
相关推荐
在JavaScript中,`attachEvent` 和 `addEventListener` 是两种用于为元素添加事件处理程序的方法,主要在Internet Explorer和非IE浏览器(遵循W3C标准)中使用。它们都是用来监听和响应用户或浏览器的特定行为,如...
8. **事件处理**:IE使用`attachEvent`,非IE浏览器使用`addEventListener`,需要封装函数来统一处理。 9. **JavaScript变量声明**:IE6在函数作用域内未声明的变量会自动提升到全局,其他浏览器则会抛出错误,应...
- `document.createElement`创建的元素,其事件处理函数绑定方式在Firefox和IE上有所不同,需使用`addEventListener`和`attachEvent`。 - `window.onload`事件处理在两个浏览器中执行时机有差异,可以使用`...
attachEvent与addEventListener区别适应的浏览器版本不同,同时在使用的过程中要注意
而在Firefox及支持DOM的浏览器中,使用`addEventListener`和`removeEventListener`方法,如下所示: ```javascript var obj = document.getElementById("id"); var fnClick = function() { alert("ss"); }; var ...
2. **盒模型差异**:IE使用的是"怪异盒模型",将边框和内填充包含在元素的总宽度和高度中,而Firefox和其他遵循W3C标准的浏览器使用"正常盒模型",边框和内填充是额外添加的。这会导致元素尺寸计算上的不一致,需要...
在处理事件监听器时,IE使用attachEvent,Firefox使用addEventListener。 再者,CSS样式和JavaScript的交互在IE和Firefox上也有区别。IE有时会忽视标准的style属性,而是使用专有的currentStyle属性来获取元素的...
- `addEventListener`和`attachEvent`:IE使用`attachEvent`,其他标准浏览器使用`addEventListener`。需要分别处理。 4. **事件处理**: - 事件注册:IE使用`attachEvent`,非IE浏览器使用`addEventListener`。...
1. **事件处理**:IE使用attachEvent方法添加事件监听器,而Firefox则使用addEventListener。为确保兼容,可以创建一个跨浏览器的事件处理函数,如: ```javascript function addEvent(element, event, handler) { ...
- 在事件处理上,IE使用attachEvent,Firefox使用addEventListener,需要编写不同的事件绑定代码。 6. **错误处理**: - IE中的`try...catch`语句在捕获错误时可能会返回更少的详细信息,而Firefox通常提供更丰富...
- IE使用`XMLHttpRequest`的`createRequest`方法,而Firefox和其他标准浏览器直接创建`XMLHttpRequest`实例。 - IE的`onreadystatechange`事件在某些情况下处理方式与Firefox不同。 7. **定时器**: - `...
`addEventListener`是W3C标准的一部分,被大多数现代浏览器支持,包括Firefox和Chrome,而`attachEvent`是Internet Explorer特有的非标准方法。 在事件处理函数中,`this`通常指的是事件发生时的当前目标元素,即...
- IE使用`event.clientX`和`event.clientY`,Firefox使用`event.pageX`和`event.pageY`。可以使用`event.clientX + document.body.scrollLeft`和`event.clientY + document.body.scrollTop`来兼容。 7. **event的...
- 在事件处理上,Firefox倾向于使用`addEventListener()`和`removeEventListener()`,而IE则使用`attachEvent()`和`detachEvent()`。 2. **BOM对象差异**: - 浏览器的Browser Object Model(BOM)中,如`window`...
JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...
IE早期版本使用`attachEvent`和`detachEvent`,而Firefox等其他浏览器使用`addEventListener`和`removeEventListener`。开发者需注意这两种方式的互换。 3. **CSS选择器支持**:JavaScript可以通过`querySelector`...
使用`attachEvent`是IE的事件绑定方式,而Firefox使用`addEventListener`。`addEvent()`函数封装了这两种方法,使得可以在任何浏览器上添加事件监听器。 5. **Firefox 注册innerText** Firefox不支持innerText...
本文将深入探讨如何使用JavaScript(js)编写兼容360、Firefox、Chrome、Opera、傲游、搜狗和世界之窗等主流浏览器的弹窗代码,以及为何不支持Safari和IE8及以下版本的浏览器。 首先,我们了解JavaScript弹窗的基本...
而Firefox和其他基于W3C标准的浏览器则使用`addEventListener`和`removeEventListener`方法来处理事件绑定。 拖动功能在网页中通常涉及鼠标按下、移动和释放等事件。在IE中,我们可以通过`onmousedown`、`...
对象名.addEventListener(“事件名(不带ON)”,函数名,true/false);(FF下) 对象名.attachEvent(“事件名”,函数名);(IE下) 说明: 事件名称,要注意的是”onclick”要改为”click”,”onblur”要改为”blur”,也...