validate navegador identificar jquery google-chrome webkit

navegador - jquery.browser is deprecated



Problemas de WebKit con event.layerX y event.layerY (9)

¿¡Que esta pasando!?

"jQuery probablemente copia esas propiedades en el objeto jQuery". Eres exactamente correcto, así que parece que ya lo sabes. :)

Con suerte, jQuery actualizará su código para dejar de tocar eso, pero al mismo tiempo WebKit debería haber sabido que no debe registrar una advertencia de desaprobación en un evento (al menos en mi opinión). Un controlador de mousemove y su consola explota. :)

Aquí hay un boleto reciente de jQuery: http://bugs.jquery.com/ticket/10531

ACTUALIZACIÓN: esto se soluciona ahora si actualiza a jQuery 1.7.

Tenga en cuenta que si actualizar jQuery no soluciona el problema, es posible que tenga algo que ver con las extensiones / complementos usados, tal como Jake declaró en su answer .

Acabo de darme cuenta de que recibí toneladas de advertencias obsoletas en la última versión (canaria) de Chrome.

event.layerX y event.layerY están rotos y en desuso en WebKit. Se retirarán del motor en un futuro próximo.

Parece que jQuery está arruinando la cosa.

Estoy usando: jquery-1.6.1.min.js .

¿Le ayudaría actualizar a la última versión de jQuery o aún no se ha corregido o es un error de Chrome o es otra cosa?

PD

No puedo mostrarle el código porque creo que es un error general, pero sospecho que se emiten las advertencias cuando intento acceder a un objeto jQuery o cuando jQuery intenta acceder a layerX / layerY (bueno, estoy bastante seguro de que ese es el caso considerando el error: p).

jQuery probablemente copia esas propiedades en el objeto jQuery.

Asi que...

¿Que esta pasando?

EDITAR

jQuery 1.7 está fuera y soluciona este problema.

Lea más en su blog, aquí .


Además de los problemas de configuración enumerados en las otras respuestas, este error se puede desencadenar por un simple error en su propio código: olvidando el ''#'' de un selector de ID de jQuery.

Tenía un código que parecía

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

(perdiendo el # en frente del "conjunto de datos")

Además de que (obviamente) no funciona, activó este mensaje de error en Chrome.


Aquí hay otra solución de una línea, sin reemplazar la instancia original de $ .event.props (que puede o no ser una matriz), por si acaso :-)

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


He usado esto después de llamar a cualquier evento:

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

Eso me funcionó, no tengo mensajes de advertencia desde que hice este parche en mi código.


La enorme cantidad de estos mensajes (solo obtuve 80000 de ellos mientras uso gmail) es un error en Chrome.

Deberías protagonizar el tema sobre el cromo .


La solución más corta a esto es esta sola línea:

$.event.props = $.event.props.join(''|'').replace(''layerX|layerY|'', '''').split(''|'');


Me encontré con este problema en mi propio código. Resulta que estaba iterando sobre todas las propiedades de un objeto de evento como parte de una herramienta de depuración / inspección que estaba usando. En este caso particular, estaba usando $ .extend de jQuery para clonar el objeto para una inspección posterior, pero creo que cualquiera de las técnicas de iteración estándar en los distintos kits de herramientas también habría activado la advertencia.

Lo menciono aquí porque mi idea inicial de simplemente buscar en la base del código las instancias de layerX o layerY no fue de ayuda: se hacía referencia a la propiedad de forma genérica, no por nombre.


También puede ser causado por las extensiones de Chrome, así que verifíquelas si la actualización de jQuery no funciona.


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

La solución temporal es ejecutar este código antes de realizar cualquier enlace de evento a través de 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; }());

ACTUALIZAR

Vea las últimas pruebas de rendimiento para descubrir cuál es la forma más rápida de eliminar los accesorios de eventos.