W3C愤怒者
普通会员
普通会员
  • 铜币0枚
  • 威望0点
  • 贡献值0点
阅读:2900回复:3

兼容札记

楼主#
更多 发布于:2007-03-13 08:39
下面是前段时间,系统全面升级,浏览器兼容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
海量数据的挖掘|SEO|AJAX
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
1C#
发布于:2007-03-16 18:50
Re:兼容札记
原来又是马甲~
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
zhaoshi
写手
写手
  • 铜币44枚
  • 威望10点
  • 贡献值1点
  • 社区居民
2C#
发布于:2007-03-16 21:28
Re:兼容札记
你好,马甲.

楼上的马甲好大 啊
Foolish,stupid,are you out of your mind? 站得更高,尿得更远~
suchasplus
作家
作家
  • 铜币16枚
  • 威望11点
  • 贡献值1点
3C#
发布于:2007-03-16 22:12
Re:兼容札记
sodisnai~
The history of these days will be written in blood... By crushing the armies of our enemy, by seizing the weapons they thought to turn against us, we were fighting for our very existence!
游客

返回顶部