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

时间:2011-01-10 02:33:58

标签: javascript events javascript-events cross-browser

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

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

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;
};

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

1 个答案:

答案 0 :(得分:2)

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

e.layerX仅适用于定位的元素,因此至少需要为要运行的元素添加“position:relative”。其次e.offsetX只能在 IE8及更高版本中正常工作,所以你应该避免使用它(尽管我现在正在使用它们,但这只需要在特定的浏览器中使用)