WebKit问题与event.layerX和event.layerY

我刚刚注意到,在Chrome的最新版本(金丝雀)中,我收到了大量不推荐使用的警告。

event.layerX和event.layerY在WebKit中被破坏并被弃用。 他们将在不久的将来从引擎中移除。

看起来像jQuery是搞砸了。

我使用的是: jquery-1.6.1.min.js

它有助于升级到最新的jQuery版本,还是没有修复它,或者它是Chrome的bug还是其他的东西。

PS

我不能显示你的代码,因为我认为这是一个普遍的错误,但我怀疑当我尝试访问一个jQuery对象或jQuery尝试访问layerX / layerY时会引发警告(我很确定这是考虑错误:P)。

jQuery可能会将这些属性复制到jQuery对象中。

所以...

这是怎么回事?

编辑

jQuery 1.7已经出来并解决了这个问题。

在这里阅读更多的博客。


这是怎么回事!?

“jQuery可能会将这些属性复制到jQuery对象中。” 你完全正确,所以听起来你已经知道了! :)

希望jQuery会更新他们的代码来停止触摸,但同时WebKit应该知道比在事件上记录一个弃用警告更好(至少在我看来)。 一个mousemove处理程序和您的控制台爆炸。 :)

以下是最近的jQuery门票:http://bugs.jquery.com/ticket/10531

更新:现在如果升级到jQuery 1.7,现在已经修复了。

请注意,如果升级jQuery不能解决您的问题,它可能与使用的扩展/插件有关,正如Jake在回答中所述。


http://jsperf.com/removing-event-props/2

临时解决方法是在通过jQuery执行任何事件绑定之前运行此代码:

(function(){
    // remove layerX and layerY
    var all = $.event.props,
        len = all.length,
        res = [];
    while (len--) {
      var el = all[len];
      if (el != 'layerX' && el != 'layerY') res.push(el);
    }
    $.event.props = res;
}());

UPDATE

查看最新的性能测试,找出最快的方式去除事件道具。


对此的最短解决方案是这样的一行:

$.event.props = $.event.props.join('|').replace('layerX|layerY|', '').split('|');
链接地址: http://www.djcxy.com/p/35421.html

上一篇: WebKit issues with event.layerX and event.layerY

下一篇: Selecting text in an element (akin to highlighting with your mouse)