|
阅读:2901回复:3
兼容札记
下面是前段时间,系统全面升级,浏览器兼容firefox和ie以及Opera时的一些兼容经验,现在写出来与大家探讨,有不对的地方欢迎指正。
一.事件处理 在ie中处理事件直接使用window.event对象即可,但在firefox中,是没有window.event对象的,函数需要使用事件的时候,需要在事件发生时把事件作为参数传递给函数,不象在ie中,事件对象是全局的,随处都可以访问。下面这个getEvent()函数可以兼容firefox和ie,只需要在访问事件对象的函数的开始调用getEvent()即可,不用再把事件作为参数传递。 function myfunc() { var evt=getEvent(); var element=evt.srcElement || evt.target; } function getEvent() { if(document.all) return window.event;//如果是ie func=getEvent.caller; while(func!=null){ var arg0=func.arguments[0]; if(arg0){if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){return arg0;} } func=func.caller; } return null; } 在firefox和ie中event对象还是有些差别的,比如ie中event.srcElement,在firefox中就是event.target,具体可参考了: http://www.javascriptkit.com/domref/domevent.shtml 二.访问frame或iframe对象 在ie中可以通过frame的id或name来访问,但在firefox中只能用frame的name来访问. 三,自定义属性 在ie中自定义属性可以直接访问,但在firefox中需要使用getAttribute() 比如 <td id="name" tel="1234"></td> ie中:alert(name.tel); firefox中:alert(name.getAttribute("tel")); 四,innerText和textContent ie中的innerText在firefox中对应的是textContent 例如 if(document.all){ document.getElementById('element').innerText = "my text"; } else{ document.getElementById('element').textContent = "my text"; } 其他参考 http://developer.mozilla.org/en/docs/Gecko_DOM_Reference http://www.javascriptkit.com/javatutors/dom.shtml http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/ http://www.firefox.net.cn/newforum/viewtopic.php?t=17017 |
|
|
|
1C#
发布于:2007-03-16 18:50
Re:兼容札记
原来又是马甲~ |
|
|
|
2C#
发布于:2007-03-16 21:28
Re:兼容札记
你好,马甲.
楼上的马甲好大 啊 |
|
|
|
3C#
发布于:2007-03-16 22:12
Re:兼容札记
sodisnai~ |
|
|