这是一个巨坑,以后把遇到的问题会都贴到这里。一般Chrome没问题的我会忽略掉,如果是找到别人贴的代码,Chrome下有问题我会测试到通过为止,因此以下所有代码是Chrome23亲测可用。
1. event.srcElement 属性:
IE下可以使用event.srcElement属性,但其他浏览器不行,所以要兼容需要使用
1 var el = evt.srcElement ? evt.srcElement : evt.target;
遵照W3C的规格, 是没有event 这个内置对象的, 所以会出现的错误讯息是"event is not defined ", 而IE会把event会丢给window.event,
因此IE上的Javascript 可能会在其他浏览器上有问题,下面有一个通用的解决办法
(1) 在定义function name时请多加一个event或evt参数,不管你的function 有没有其他参数要传,习惯上放在第一个位置,如下:
1 funcname( event,....)
2 {
3 var evt = event ? event : (window.event ? window.event : null);
4 if (document.all) // IE
5 {
6 var x = event.x ; // 取得滑鼠指标目前的 x 位置
7 var y = event.y ; // 取得滑鼠指标目前的 y 位置
8 }
9 else // other
10 {
11 var x = evt.clientX; // 取得滑鼠指标目前的 x 位置
12 var y = evt.clientY; // 取得滑鼠指标目前的 y 位置
13 }
14 }
2.IE与其他浏览器有些对象的调用方式不同,如下(待完善):
| IE |
other |
| event.srcElement |
event.target |
| a.innerText |
a.textContent |
| document.all[obj].style |
document.getElementById(obj).style |