收藏 分销(赏)

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

上传人:pc****0 文档编号:6176438 上传时间:2024-11-29 格式:DOC 页数:7 大小:47KB 下载积分:10 金币
下载 相关 举报
使用attachEvent和addEventListener区分浏览器是火狐还是IE.doc_第1页
第1页 / 共7页
使用attachEvent和addEventListener区分浏览器是火狐还是IE.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
使用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; Java代码 if (window.addEventListener) { window.addEventListener('load', _uCO, false); } else if (window.attachEvent) { window.attachEvent('onload', _uCO); } js 监听事件,ie 火狐 javascript addEventListener attachEvent <head> <script type='text/javascript'> function init() { // 跳转处理 var handler = function() { var host = document.location.href; if(host.indexOf('') >= 0) document.location = "/"; else ; }; // 添加监听 if (window.addEventListener) { window.addEventListener('DOMContentLoaded', handler, false); window.addEventListener('load', handler, false); } else if (window.attachEvent) window.attachEvent('onload', handler); else window.onload = handler; } init(); </script> </head> <body> -------------------- window和firefox下的event -------------------- <SCRIPT LANGUAGE="JavaScript"> <!-- function hh(e) { alert(arguments[0]); e=window.event||e; var el=e.srcElement||e.target; alert(el.value); } //--> </SCRIPT> <INPUT id ="button2" value ="hahahahah" TYPE="button" onclick="hh(event);"> -------------------- test -------------------- if(WebComm.getOS() == "MSIE") { obj.setCapture (); } else { document.addEventListener("mousemove",WebComm.MoveDiv,false); } if(WebComm.getOS() == "MSIE") { obj.releaseCapture (); } else { document.removeEventListener("mousemove",WebComm.MoveDiv,false); } ------------------ 1.火狐不能对innerText支持,也不知道为什么。火狐支持innerHTML但却不支持innerText,所以上网查了一 下,原来它改支持textContent来实现innerText,不过实现得没有那么好,默认把多余的空格也保留了。如果不用textContent, 如果字符串里面不包含HTML代码也可以用innerHTML代替 2.禁止选取网页内容: 在IE中一般用js:obj.onselectstart=function(){return false;} 而火狐用CSS:-moz-user-select:none 3.滤镜的支持(例:透明滤镜): IE:filter:alpha(opacity=10); 火狐:-moz-opacity:.10; 4.捕获事件: IE:obj.setCapture() 、obj.releaseCapture() 火狐: document.addEventListener("mousemove",mousemovefunction,true); document.removeEventListener("mousemove",mousemovefunction,true); 5.获取鼠标位置: IE:event.clientX、event.clientY 火狐:需要事件函数传递事件对象 obj.onmousemove=function(ev){ X= ev.pageX;Y=ev.pageY; } 6.DIV等元素的边界问题: 比如:设置一个div的CSS::{width:100px;height:100px;border:#000000 1px solid;} IE中:div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px; 而火狐:div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px; 所以在做这个兼容IE和火狐的拖动窗口时,在js和css的写法上要动点脑筋,给大家两个小技巧. 一.判断浏览器类型: var isIE=document.all? true:false; 我写了一个变量,如果支持document.all语法那么isIE=true,否则isIE=false 二.在不同浏览器下的CSS处理: 一般可以用!important来优先使用css语句(仅火狐支持) 比如:{border-width:0px!important;border-width:1px;} 在火狐下这个元素是没有边框的,在IE下边框宽度是1px 又发现几处XHTML与正常状态下的JS、CSS的区别,前阶段写了兼容IE/火狐的拖动窗口发现了这两个浏览器的几处区别。今天又写了兼容XHTML的版本,因为现在不是流行web标准嘛,偶不能落后啊!再说现在ASP.NET中的所有页面都是应用XHTML标准的,如果在布局页面中删了这句标准代码,里面的布局和控件visual studio就不显示了。 呵呵,在网页开头加了这个代码就是所谓的XHTML标准了<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 改了一下JS和CSS,调试了N次,发现了XHTML标准下的几个不同点: 1.document.documentElement 与 document.body 代码中设置页面的CSS时一定要用:document.documentElement 比如:document.documentElement.style.overflow='hidden'; overflow-X、overflow-Y 这两个分坐标属性XHTML是不支持的; 2.在取得网页窗口区域和获取滚动条位移距离时也要用document.documentElement 即这四个属性(clientWidth、clientHeight、scrollLeft、scrollTop)一定要用document.documentElement 但是document.body.appendChild()和document.body.removeChild()却是可以用的,而且用 document.documentElement.appendChild()和 document.documentElement.removeChild()代替却会报错; 所以我总结了一下仅clientWidth、clientHeight、scrollLeft、scrollTop和document.documentElement.style时才用document.documentElement 3.呵呵,加了这个标准以后IE的边框问题也出现了变化,现在和火狐趋于一致了,是不是这个就是XHTML的优点——跨浏览器的标准 上篇文章提到: 设置一个div的CSS::{width:100px;height:100px;border:#000000 1px solid;} IE中(正常情况):div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px; 火狐(正常情况)::div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px; 加了XHTML标准后的(IE和火狐打和了,^_^): IE中(XHTML):div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px; 火狐(XHTML)::div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px; -------------------- 对于IE的attachEvent方法可能大家都比较熟,现在说说FireFox的addEventListener的用法。 addEventListener的参数一共有三个,语法为: element.addEventListener(type,listener,useCapture) 下面是详解 其中element是要绑定函数的对象。 type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。 listener当然就是绑定的函数了,记住不要跟括号 最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。 userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。建议用false,看个例子吧。 html代码 <div id="div_test"> <input type="button" id="btn_test" value="技术基地" /> </div> window.onload=function() { document.getElementById("div_test").addEventListener("click",test1,false); document.getElementById("btn_test").addEventListener("click",test2,false); } function test1() { alert("外层div触发") } function test2() { alert("内层input触发") } 如果userCapture是true则test1先触发,如果userCapture是false则test2先触发。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服