跨浏览器事件对象规范化?

qwe*_*ymk 6 javascript events cross-browser dom-events

我正在寻找关于事件对象的事件规范化的良好资源.我想自己做,但我一直觉得我会想念一些东西.

这是我到目前为止所告诉我的,如果我错过了什么.

var eFix = function(e) {
    e = e || window.event;
    e.target = e.target || e.srcElement;
    e.offsetX = e.offsetX || e.layerX;
    e.offsetY = e.offsetY || e.layerY;
    e.relatedTarget = e.relatedTarget ||
        e.type == 'mouseover' ? e.fromElement : e.toElement;
    e.target = e.target || e.srcElement;
    if (target.nodeType === 3) target = target.parentNode; //Safari bug
    return e;
};
Run Code Online (Sandbox Code Playgroud)

有没有人看过完整的归一化功能?我错过了什么吗?(不用说我们要去W3C型号而不是IE)

小智 2

您的代码还有另一个问题:

e.layerX仅适用于定位元素,因此至少您需要向元素添加“position:relative”才能发挥作用。其次只能在IE8 及更高版本e.offsetX中正常工作,因此您可能应该避免使用任何一种方式(虽然我现在正在使用它们,但这只需要在特定浏览器中工作)。