需要注意的是:
Firefox 不支持事件对象的 'returnValue' 属性,测试样例中虽然显示 'returnValue' 值为 false,但这仅仅是因为给事件对象添加了 'returnValue' 属性,并没有起到取消事件默认动作的作用,这从地址栏可以看出,多了 '#' 号,这是 A 标签的 'href' 属性造成的。 各浏览器对 Event 接口的 'timeStamp' 属性返回值都不同。关于 IE 实现的事件对象非标准的属性及方法的详细信息,请参考 MSDN event Object。
关于 Firefox 对事件对象实现的详细信息,请参考 MDC event。
解决方案 1. 使用特性判断创建无兼容性问题的事件监听器绑定和解绑函数如:
function addEvent(elem, type, handler, useCapture){ elem.addEventListener ? elem.addEventListener(type, handler, useCapture) : elem.attachEvent("on" + type, handler); } function removeEvent(elem, type, handler, useCapture){ elem.removeEventListener ? elem.removeEventListener(type, handler, useCapture) : elem.detachEvent("on" + type, handler); } 2. 使用特性判断获得有效的事件对象在事件监听器中判断传入的第一个参数或 window.event 是否有效,如:
function handler(e){ e = e || window.event; } 3. 使用特性判断使用与标准对应的非标准方法及属性尽管 IE 对事件对象的标准属性和方法支持有限,但它自己实现的事件模型也基本能够替代或实现标准属性或方法的功能。
下表总结了部分与标准事件对象对应的,或可以实现标准属性或方法功能的非标准属性:
Standard Non-standardtarget srcElement
preventDefault() returnValue
stopPropagation() cancelBubble
relatedTarget fromElement toElement
另,标准的 'clientX' 属性和非标准的 'x' 属性作用是相同的,同样 'clientY' 和 'y' 也是。
您可能感兴趣的文章: