google-chrome - WebKit event.layerX和event.layerY的问题

  显示原文与译文双语对照的内容

我刚刚注意到在最新的( 金丝雀) 构建中得到了大量过时的警告。

event.layerX 和 event.layerY 在 web kit中被破坏和废弃。 它们将在不久的将来从引擎中删除。

看来jQuery正在把事情搞砸。

我正在使用:jquery-1.6.1.min.js

升级到最新的jQuery版本会有帮助还是它还不是固定的或者是一个 Chrome Bug 或者是其他的。

PS

我无法向你显示代码,因为我认为这是一般性错误,但我想当我尝试访问一个jQuery对象或者jQuery试图访问 layerX/layerY ( 我很确定这种情况是考虑到错误:) 时,警告会被抛出。

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

那么。。

发生了什么?

编辑

jQuery 1.7已经退出并修复这里问题。

在他们的博客上阅读更多的,这里是

时间:

发生了什么? !

"jQuery可能会将这些属性复制到jQuery对象。"你是正确的,所以你已经知道 ! : )

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

下面是一个最新的jQuery票证: http://bugs.jquery.com/ticket/10531

更新:如果你升级到 jQuery 1.7,现在将被修复。

请注意,如果升级jQuery没有解决这个问题,它可能与使用的扩展/插件有关,就像杰克在他的回答中所述。

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

更新

查看最新性能测试以找出最快的方法是删除事件道具。

这里是另一个行修复,不替换 $.event.props ( 可能是数组,也可能不是数组)的原始实例,以防万一:- )


$.each(["layerX","layerY"], function(i,v) { if((i=p.indexOf(v))> -1) $.fn.splice.call($.event.props,i,1) })

在调用任何事件后,我都使用了它:


$.event.props.splice($.event.props.indexOf("layerY"),1);
$.event.props.splice($.event.props.indexOf("layerX"),1);

这为我工作,我没有警告消息,因为我在代码上做了这个补丁。

除了其他答案中列出的配置问题外,这个错误还可以通过你自己的代码中的一个简单错误触发: 从一个jQuery标识符选择器中忘记'δ #'。

我有代码看起来像


$('datenotset_2341').click(function(){
.. ..etc....
});

(错过前面的#"datenotset")

由于( 明显明显) 无法正常工作,它在 Chrome 中触发了这个错误消息。

...