Como muchos otros, mi sitio web usa 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 cambiar de XMLHTTPRequest a WHATWG en términos simples? Dice que sucedió en 2012.
Además, la documentación dice que Synchronous XMLHttpRequest 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, ¿necesitan modificar su código existente?
Respuestas:
Para evitar esta advertencia, no utilice:
en cualquiera de sus
$.ajax()
llamadas. Esta es la única característicaXMLHttpRequest
que está obsoleta.El valor predeterminado es
async: true
, por lo que si nunca usa esta opción, su código debería ser seguro si la función se elimina realmente.Sin embargo, probablemente no lo será; puede que se elimine de los estándares, pero apuesto a que los navegadores continuarán admitiéndolo durante muchos años. Entonces, si realmente necesita AJAX sincrónico por alguna razón, 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 nunca pensaron que desaparecería tampoco, pero ahora está en proceso de ser eliminado.Tenga en cuenta que la
Fetch
API que está reemplazandoXMLHttpRequest
ni siquiera ofrece una opción sincrónica.fuente
$.ajax
.jquery.i18n.properties.js
pero no hay una llamada explícita de mi lado a$.ajax.
Quizás internamente, pero no estoy seguro..properties
archivos. Probablemente esté usando AJAX síncrono para hacerlo, lo que genera esta advertencia.La respuesta aceptada es correcta, pero encontré otra causa si está desarrollando bajo ASP.NET con Visual Studio 2013 o superior y está seguro de que no realizó ninguna solicitud ajax síncrona ni definió ningún script en el lugar incorrecto.
La solución es desactivar la función "Enlace del navegador" desmarcando "Activar enlace del navegador" en el menú desplegable de la barra de herramientas VS indicado por el pequeño icono 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 solo debería suceder durante la depuración local, pero es bueno saber la causa de las advertencias.
fuente
web.config
agregando<add key="vs:EnableBrowserLink" value="false" />
adentro<appSettings>
como se describe aquí: poconosystems.com/software-development/… .Esto me sucedió al tener un enlace a js externos fuera de la cabeza 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ía lo mismo haciendo algo como esto:
Pero no he probado esa idea.
fuente
Fue mencionado como un comentario por @ henri-chan , pero creo que merece más atención:
Cuando actualiza el contenido de un elemento con un nuevo html usando jQuery / javascript, y este nuevo html contiene
<script>
etiquetas, estas se ejecutan sincrónicamente y, por lo tanto, desencadenan este error. Lo mismo ocurre con las hojas de estilo.Usted sabe que esto está sucediendo cuando ve (múltiples) scripts u hojas de estilo cargados como
XHR
en la ventana de la consola. (Firefox).fuente
Ninguna de las respuestas anteriores (que son correctas) se adaptaba a mi situación: no uso el
async
parámetrojQuery.ajax()
y no incluyo una etiqueta de secuencia de comandos como parte del contenido que se estaba devolviendo como:Mi situación es que estoy llamando a dos solicitudes AJAX consecutivamente con el objetivo de actualizar dos divs al mismo tiempo:
Cuando hago clic en
a.anchor3
, se levanta la bandera de advertencia. Resolví el problema reemplazando la invocación de f2 porclick()
función:fuente
Mi problema: utilizo solicitudes asincrónicas que descargan el código en un búfer. Tengo un bucle comprobando el búfer cada segundo. Cuando el volcado ha llegado al búfer, ejecuto el código. También utilizo un tiempo de espera. Para el usuario final, la página funciona como si se utilizaran solicitudes sincrónicas.
fuente
$.ajax({ url : "example.com", async : true /* default is true */ }).done(function(response){ // Process the dump })
Espero no haber leído nada mal.Si cargamos el script en vista parcial, entonces este problema vendrá
Esta solución funciona bien para mí
fuente