我刚刚注意到,在Chrome的最新版本(金丝雀版)中,我得到了大量的弃用警告。
事件。layerX和事件。layerY在WebKit中被破坏和弃用。它们将在不久的将来从发动机中移除。
看起来jQuery把事情搞砸了。
我使用的是:jquery-1.6.1.min.js。
升级到最新的jQuery版本是否会有帮助,或者它还没有修复,或者它是Chrome的bug或其他东西。
PS
我不能向您展示代码,因为我认为这是一个普遍的错误,但我怀疑警告会抛出当我试图访问一个jQuery对象或当jQuery试图访问layerX / layerY(好吧,我很确定这是考虑到错误:P的情况)。
jQuery可能会将这些属性复制到jQuery对象中。
所以…
这是怎么呢
EDIT
jQuery 1.7已经发布并修复了这个问题。
在他们的博客上阅读更多。
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;
}());
更新
请参阅最新的性能测试,以了解删除事件道具的最快方法。
这是怎么回事!?
jQuery可能会将这些属性复制到jQuery对象中。你完全正确,所以听起来你已经知道了!:)
希望jQuery会更新他们的代码来停止触及它,但同时WebKit应该知道在事件上记录deprecation警告(至少在我看来)。一个鼠标移动处理程序和你的控制台爆炸。:)
这是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;
}());
更新
请参阅最新的性能测试,以了解删除事件道具的最快方法。