event.returnValue está en desuso. Utilice el evento estándar.preventDefault () en su lugar

222

Tengo este script:

<script>
$(document).ready(function () {
    $("#changeResumeStatus").click(function () {
        $.get("{% url 'main:changeResumeStatus' %}", function (data) {
            if (data['message'] == 'hidden') {
                $("#resumeStatus").text("скрыто");
            } else {
                $("#resumeStatus").text("опубликовано");
            }
        }, "json");
    });
});
</script>

Recibo el siguiente error en mi consola Google Chrome:

event.returnValue está en desuso. Utilice el evento estándar.preventDefault () en su lugar.

Estoy usando jQuery v1.10.2 y #changeResumeStatuses a <span>.

¿Qué tiene de malo mi guión?

Alex Parakhnevich
fuente
19
Creo que eso no es un error, sino simplemente una advertencia: este puede ser ignorado de manera segura.
Qantas 94 Heavy
32
Esta advertencia sigue a la última actualización de Chrome, no te preocupes
A. Wolff
2
Debería buscar escapar de cadenas no ASCII.
Gleno
44
@AlexParakhnevich No hay una sola razón convincente para hacerlo, sino algunas pocas que surgen de vez en cuando. Mi reacción fue instintiva en lugar de bien pensada, para ser honesto. En los proyectos en los que estoy trabajando en este momento, hay una directriz para no usar caracteres no ascii en literales, que instituí en el pasado, porque algunas herramientas externas (compilador de mecanografía) se ahogaron en tal entrada. Funciona bastante bien en la mayoría de los casos, pero a veces consume mucho tiempo del desarrollador cuando las cosas salen mal. De todos modos, .empty().append("text")se expresa mejor como .text("text").
Gleno
1
@Gleno gracias por compartir
Alex Parakhnevich

Respuestas:

204

Esto es solo una advertencia: su código aún funciona, pero probablemente no funcionará en el futuro ya que el método está en desuso. Consulte la fuente relevante de cromo y el parche correspondiente .

Esto ya ha sido reconocido y corregido en jQuery 1.11 (ver aquí y aquí ).

Paul Mougel
fuente
12
Dudo que alguien rompa esto pronto si eso significa que todas las páginas que usan JQuery <1.11 se rompan.
Backpackcoder
26
Esta advertencia también aparece con jQuery 2.0.3 (más reciente estable a partir de este comentario), y el hito actual se establece en 2.1, para la solución.
contrarrestar el
¿Usar jQuery 1.11 solucionará el problema?
Krunal
Solo para aclarar ... ¿ nojQuery ha dejado de usar en sus controladores de clics? ¿Se está quejando Chrome de un fragmento de código que se encuentra dentro de la biblioteca jQuery? return false
mpen
2
En efecto. Chrome ha quedado en desuso, event.returnValueque solo existía por compatibilidad con versiones anteriores con IE
Paul Mougel
22

Solo para referencia de otros, acabo de recibir esto y descubrí que se debía a AngularJS . Es por compatibilidad con versiones anteriores:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
fuente
44
Recibo el error en un sitio de huesos desnudos sin angular utilizado o referenciado, posiblemente indirectamente referenciado, pero lo dudo.
B. Clay Shannon
1
@ B.ClayShannon: No es un error, es una advertencia. Hay una gran diferencia, especialmente en nuestro contexto. Puedes ignorarlo con seguridad.
f.ardelian
1
@ B.ClayShannon Si lo incluye, Chrome lo analizará exactamente igual que si fuera un script que proporcionó y (correctamente) arrojará la advertencia.
iCodeSometime
20

Si usa Bootstrap :

La versión actual de Bootstrap (3.0.2) (con jQuery 1.10.2 y Chrome) también parece generar esta advertencia.

(También lo hace en Twitter, por cierto).

Actualizar

La versión actual de Bootstrap (3.1.0) ya no parece generar esta advertencia.

ensignr
fuente
19

Ese es su problema de API jQuery , no su script. No hay mucho de qué preocuparse.

Victor Zhang
fuente
6

Esta es una advertencia relacionada con el hecho de que la mayoría de los frameworks de JavaScript (jQuery, Angular, YUI, Bootstrap ...) ofrecen soporte para versiones anteriores de Internet Explorer, el más desagradable y odiado desde IE8 hasta IE6: /

Un día, ese soporte de compatibilidad con versiones anteriores se eliminará (para IE8 / 7/6 ya que IE9 se ocupa de él ), y ya no verá esta advertencia (y otros errores de IEish).

Es cuestión de tiempo (ahora IE8 tiene una participación mundial del 10% , una vez que alcanza el 1% está MUERTO ), mientras tanto, simplemente ignore la advertencia y manténgase zen :)

numediaweb
fuente
jQuery 2.xx solo es compatible con IE9 y versiones posteriores. Si desea soporte para IE8 en jQuery, debe usar la versión 1.xx
Pete
3

Vi esta advertencia en muchos sitios web. Además, vi que la biblioteca YUI 3 también da la misma advertencia. Es una advertencia generada desde la biblioteca (ya sea jQuery o YUI).

eAbi
fuente