您的位置:首页 > Web前端 > JavaScript

兼容firefox和ie的javascript的一些写法

2007-04-27 18:09 766 查看
有很多人遇到这样的问题,干脆把我的收藏共享出来算了:
推荐flapjax用用。。。。相关链接
http://blackanger.blog.51cto.com/blog/140924/22646

以下是转载的正文:

兼容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,具体可参考:
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

FireFox中的DOM参考手册:http://www.mozilla.org/docs/dom/domref/dom_shortTOC.html
IE中的DOM参考手册:http://msdn.microsoft.com/workshop/author/dhtml/reference/dhtml_reference_entry.asp?frame=true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: