jQuery ha dejado de utilizar XMLHTTPRequest sincrónico
Como muchos otros, mi sitio web utiliza jQuery. Cuando abro las herramientas de desarrollo, veo una advertencia que dice que XMLHTTPRequest es
en desuso debido a sus efectos perjudiciales para la experiencia del usuario final.
Continué y leí parte de la documentación , pero era bastante técnica. ¿Alguien puede explicar las consecuencias de pasar de XMLHTTPRequest a WHATWG en términos simples? Dice que sucedió en 2012.
Además, la documentación dice que XMLHttpRequest síncrono fuera de los trabajadores está en proceso de ser eliminado de la plataforma web, cuando eso sucede, si un agente de usuario los tenía en un servicio, ¿necesita modificar su código existente?
Para evitar esta advertencia, no utilice:
async: false
en cualquiera de tus $.ajax()
llamadas. Esta es la única característica que XMLHttpRequest
está en desuso.
El valor predeterminado es async: true
, por lo que si nunca usas esta opción, tu código debería estar seguro si alguna vez se elimina la función.
Sin embargo, probablemente no lo será; puede que se elimine de los estándares, pero apuesto a que los navegadores seguirán admitiéndolo durante muchos años. Entonces, si realmente necesita AJAX sincrónico por algún motivo, puede usar async: false
e ignorar las advertencias. Pero hay buenas razones por las que AJAX sincrónico se considera de mal estilo, por lo que probablemente debería intentar encontrar una manera de evitarlo. Y las personas que escribieron aplicaciones Flash probablemente tampoco pensaron que desaparecería, pero ahora está en proceso de eliminación gradual.
Tenga en cuenta que la Fetch
API que está reemplazando XMLHttpRequest
ni siquiera ofrece una opción sincrónica.
La respuesta aceptada es correcta, pero encontré otra causa si está desarrollando en ASP.NET con Visual Studio 2013 o superior y está seguro de que no realizó ninguna solicitud ajax sincrónica ni definió ningún script en el lugar incorrecto.
La solución es deshabilitar la función "Enlace del navegador" desmarcando "Habilitar enlace del navegador" en el menú desplegable de la barra de herramientas de VS indicado por el pequeño ícono de actualización que apunta en el sentido de las agujas del reloj. Tan pronto como haga esto y vuelva a cargar la página, ¡las advertencias deberían detenerse!
Esto sólo debería ocurrir durante la depuración local, pero aún así es bueno saber la causa de las advertencias.
Esto me sucedió porque tenía un enlace a js externo fuera del encabezado justo antes del final de la sección del cuerpo. Ya sabes, uno de estos:
<script src="http://somesite.net/js/somefile.js">
No tuvo nada que ver con JQuery.
Probablemente verías lo mismo haciendo algo como esto:
var script = $("<script></script>");
script.attr("src", basepath + "someotherfile.js");
$(document.body).append(script);
Pero no he probado esa idea.