Pee*_*Haa 508 jquery webkit google-chrome
我刚刚注意到我在最新的(金丝雀)Chrome版本中收到了大量已弃用的警告.
event.layerX和event.layerY在WebKit中被破坏和弃用.它们将在不久的将来从发动机中移除.
看起来jQuery搞砸了.
我正在使用:jquery-1.6.1.min.js.
它是否有助于升级到最新的jQuery版本,或者它尚未修复,还是Chrome错误或其他问题.
PS
我无法向您显示代码,因为我认为这是一般错误,但我怀疑当我尝试访问jQuery对象或jQuery尝试访问layerX/layerY时会抛出警告(我很确定这是考虑到错误:P).
jQuery可能会将这些属性复制到jQuery对象中.
所以...
这是怎么回事?
编辑
jQuery 1.7已经出来并解决了这个问题.
阅读更多内容,请访问他们的博客.
Ada*_*m A 463
这是怎么回事!?
"jQuery可能会将这些属性复制到jQuery对象中." 你是完全正确的,所以听起来你已经知道了!:)
希望jQuery会更新他们的代码以停止触摸它,但同时WebKit应该知道比在事件上记录弃用警告更好(至少在我看来).一个mousemove处理程序和你的控制台爆炸.:)
这是最近的jQuery票证:http://bugs.jquery.com/ticket/10531
更新:如果您升级到jQuery 1.7,现在已修复.
请注意,如果升级jQuery没有为您解决问题,它可能与使用的扩展/插件有关,正如Jake在他的回答中所述.
Dav*_*och 74
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;
}());
Run Code Online (Sandbox Code Playgroud)
UPDATE
查看最新的性能测试,了解删除事件道具的最快方法.
mek*_*all 28
对此最短的解决方案是这个单线程:
$.event.props = $.event.props.join('|').replace('layerX|layerY|', '').split('|');
Run Code Online (Sandbox Code Playgroud)
在调用任何事件后我都用过这个:
$.event.props.splice($.event.props.indexOf("layerY"),1);
$.event.props.splice($.event.props.indexOf("layerX"),1);
Run Code Online (Sandbox Code Playgroud)
这对我有用,因为我在我的代码上制作了这个补丁,所以没有任何警告信息.
这是另一个单行修复,没有替换$ .event.props的原始实例(可能是也可能不是数组),以防万一:-)
$.each(["layerX","layerY"], function(i,v) { if((i=p.indexOf(v)) > -1) $.fn.splice.call($.event.props,i,1) })
Run Code Online (Sandbox Code Playgroud)