js中的浏览器兼容问题

来源:互联网 发布:java编程心得体会 编辑:程序博客网 时间:2024/06/05 07:10

1、window.event
(1)问题:只能在IE下运行,在FF下不能,是因为Firefox的event只能在事件发生的现场使用。
(2)解决:
a.可以这样解决

       <input id="btn1" type="button" />       window.onload = function(){            var btn1 = document.getElementById('btn1');            btn1.onmouseover=function(ev){                var myEvent=ev||window.event;                alert(myEvent.clientX);                alert(myEvent.clientY);            }        }

b.或者可以通过给函数的参数传递event对象。

 <input type="button" onmousemove="showDiv(event);"//event不需要加引号 function showDiv(ev) { var myEvent=ev||window.event; myEvent.clientX; myEvent.clientY; }

2、添加事件:attachEvent和addEventListener
(1)问题:
FF使用addEventListener :[target.addEventListener(type, listener, useCapture); ][obj.addEventListener(“click”, myFunction);]

IE8及更早的版本使用attachEvent:[attachEvent(“onclick”, myFunction)]
(2)解决:

if (document.attachEvent) document.attachEvent("click", clickHandler,false);else document.addEventListener("onclick",clickHandler);

封装函数:

function addHandler(element,type,handler) {       //DOM 2级处理 chrome ff        if (element.addEventListener) {          element.addEventListener(type,handler,false);        }        //IE事件处理        else if (element.attachEvent) {          element.attachEvent('on'+type,handler);        }        //DOM 0级处理 更低级的浏览器        else{          element['on'+type]=handler;        } }

3、

0 0
原创粉丝点击