有很多人遇到这样的问题,干脆把我的收藏共享出来算了:
推荐flapjax用用。。。。相关链接
以下是转载的正文:
兼容firefox和ie的javascript的一些写法
最近我想让我们的CMS能在firefox中使用,于是以前所写的javascript代码就都需要考虑兼容问题了,无端增加了好多工作量。
下面是兼容firefox和ie时需要注意的一些写法
一,事件处理
在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,具体可参考:
在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,具体可参考:
二,访问frame或iframe对象
在ie中可以通过frame的id或name来访问,但在firefox中只能用frame的name来访问.
在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"));
在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";
}
ie中的innerText在firefox中对应的是textContent
例如
if(document.all){
document.getElementById('element').innerText = "my text";
} else{
document.getElementById('element').textContent = "my text";
}
其他参考
[url]http://developer.mozilla.org/en/docs/Gecko_DOM_Reference[/url]
[url]http://www.javascriptkit.com/javatutors/dom.shtml[/url]
[url]http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/[/url]
[url]http://www.firefox.net.cn/newforum/viewtopic.php?t=17017[/url]
[url]http://developer.mozilla.org/en/docs/Gecko_DOM_Reference[/url]
[url]http://www.javascriptkit.com/javatutors/dom.shtml[/url]
[url]http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/[/url]
[url]http://www.firefox.net.cn/newforum/viewtopic.php?t=17017[/url]
FireFox中的DOM参考手册:
[url]http://www.mozilla.org/docs/dom/domref/dom_shortTOC.html[/url]