javascript - 修复 native JavaScript 事件

标签 javascript dom dom-events

我想知道是否有任何成熟的方法来修复浏览器与 DOM 事件的不一致问题。 修复事件的最佳方法是什么?

下面是我现在正在玩的东西(尽管仍然损坏)。

Event.prototype.fix = function()
{
    //if ( ! event) var event = window.event;

    // Fix target property, if necessary (IE 6/7/8 & Safari2)
    if ( ! this.target)
    {
        this.target = this.srcElement || document;
    }

    // Target should not be a text node (Safari)
    if (this.target.nodeType === 3)
    {
        this.target = event.target.parentNode;
    }

    // Add which for key events
    if (this.which == null)
    {
        this.which = this.charCode != null ? this.charCode : this.keyCode;
    }

    // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
    if (this.metaKey === undefined)
    {
        this.metaKey = this.ctrlKey;
    }

    this.posx = 0;
    this.posy = 0;

    if (this.pageX || this.pageY)
    {
        this.posx = this.pageX;
        this.posy = this.pageY;
    }
    else if (this.clientX || this.clientY)
    {
        this.posx = this.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        this.posy = this.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
};

最佳答案

那就是jQuery .

自 2006 年以来浏览器不一致问题的终结者。

编辑

如果您担心 32kb,请使用 Google's CDN 。许多网站都使用它,因此该文件很有可能会缓存在大多数用户的计算机上。

关于javascript - 修复 native JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319261/

相关文章:

javascript - Chrome : Dynamically created <style> tag does not have content?

javascript - 如何使用 d3.js 检查元素是否在视口(viewport)中(在可见区域中)

javascript - 当用户在元素外部单击时,您如何避免失去对该元素的关注?

Javascript:js 在事件加载时不执行

javascript - Greasemonkey 脚本是否可以在 Firefox 中自动执行 Ctrl+A(全选)操作?

javascript - 谷歌地图背景图片在浏览器中显示不正确

php - 检查数据库中的现有用户名

javascript - jQuery show() 不是函数 - 用于添加 DOM 元素

javascript - 缩小 Canvas 内图表的大小

javascript - 属性列表后缺少 jquery 验证 }