He estado agregando registros a la consola para verificar el estado de diferentes variables sin usar el depurador de Firefox.
Sin embargo, en muchos lugares en los que agrego un archivo a console.log
mi main.js
archivo, recibo el siguiente error en lugar de mis adorables mensajes escritos a mano:
XMLHttpRequest síncrono en el subproceso principal está en desuso debido a sus efectos perjudiciales para la experiencia del usuario final. Para más ayuda http://xhr.spec.whatwg.org/
¿Qué alternativas o envoltorios console.log
puedo agregar al uso de mi código que no causen este error?
¿Lo estoy "haciendo mal"?
jquery
debugging
firefox
backbone.js
console.log
Nathan Basanese
fuente
fuente
<script>$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = true; });</script>
Esto eliminará la advertencia. Puedes ver aquí por el mismo problema.Respuestas:
Esto me sucedió cuando era flojo e incluí una etiqueta de script como parte del contenido que se devolvía. Como tal:
Contenido parcial de HTML:
Parece, al menos en mi caso, que si devuelve contenido HTML como ese a través de xhr, hará que jQuery haga una llamada para obtener ese script. Esa llamada ocurre con un indicador asíncrono falso ya que supone que necesita el script para continuar cargándose.
En situaciones como esta, será mejor que busque un marco vinculante de algún tipo y solo devuelva un objeto JSON, o dependiendo de su backend y plantillas, puede cambiar la forma en que carga sus scripts.
También puede usar jQuery's
getScript()
para obtener scripts relevantes. Aquí hay un violín, es solo una copia directa del ejemplo de jQuery, pero no veo ninguna advertencia cuando se cargan los scripts de esa manera.Ejemplo
http://jsfiddle.net/49tkL0qd/
fuente
<script>
como dijiste en una devolución de llamada de una llamada asíncrona ajax. Mi llamada AJAX es asíncrona sin embargo, en la devolución de llamada que hago$('#object').html(data)
donde los datos es un pedazo dehtml
con<script>
y cuando esta línea se ejecuta el aparece en el errorjs console
. +1 !!! gracias:)
.El mensaje de advertencia PUEDE SER debido a una solicitud XMLHttpRequest dentro del hilo principal con el indicador asíncrono establecido en falso.
https://xhr.spec.whatwg.org/#synchronous-flag :
La dirección futura es permitir solo XMLHttpRequests en subprocesos de trabajo. El mensaje pretende ser una advertencia a tal efecto.
fuente
console.log
está enviando estas advertencias?También estaba enfrentando el mismo problema, pero pude solucionarlo poniendo async: true. Sé que es cierto por defecto, pero funciona cuando lo escribo explícitamente
fuente
El depurador en vivo de Visual Studio 2015/2017 está inyectando código que contiene la llamada en desuso.
fuente
A veces es necesario cargar una secuencia de comandos ajax pero retrasar el documento listo hasta después de cargar la secuencia de comandos.
jQuery admite esto con el
holdReady()
función.Ejemplo de uso:
La carga real del script es asíncrona ( sin error ), pero el efecto es sincrónico si el resto de su JavaScript se ejecuta después de que el documento esté listo .
Documentación:
https://api.jquery.com/jquery.holdready
ACTUALIZACIÓN 7 de enero de 2019
De JQMIGRATE :
fuente
Para evitar esta advertencia, no use:
en cualquiera de sus llamadas $ .ajax (). Esta es la única característica de XMLHttpRequest que está en desuso.
El valor predeterminado es
jQuery ha desaprobado XMLHTTPRequest sincrónico
fuente
La respuesta parcial de @Webgr en realidad me ayudó a depurar esta advertencia en el registro de la consola, lástima que la otra parte de esa respuesta trajo tantos votos negativos :(
De todos modos, así es como descubrí cuál fue la causa de esta advertencia en mi caso:
En mi caso, otro complemento estaba cargando 2 bibliotecas .js después de cada llamada ajax, que no eran necesarias ni necesarias. La desactivación del complemento no autorizado eliminó la advertencia del registro. Desde ese punto, puede intentar solucionar el problema usted mismo (por ejemplo, limitar la carga de los scripts a ciertas páginas o eventos; esto es demasiado específico para una respuesta aquí) o ponerse en contacto con un desarrollador de complementos de terceros para resolverlo.
Espero que esto ayude a alguien.
fuente
He estado mirando las respuestas todas impresionantes. Creo que debería proporcionar el código que le está dando un problema. Dado el ejemplo a continuación, si tiene un script para vincular a jquery en page.php, recibirá ese aviso.
fuente
Recibo tal advertencia en el siguiente caso:
1) archivo1 que contiene
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. La página tiene campos de entrada. Ingreso algún valor en el campo de entrada y hago clic en el botón. Jquery envía entradas al archivo php externo.2) el archivo php externo también contiene jquery y en el archivo php externo también lo incluí
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Porque si esto recibí la advertencia.Eliminado
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
del archivo php externo y funciona sin la advertencia.Según tengo entendido al cargar el primer archivo (archivo1), cargo
jquery-1.10.2.js
y como la página no se vuelve a cargar (envía datos al archivo php externo usando jquery$.post
), luegojquery-1.10.2.js
continúo existiendo. Entonces no es necesario volver a cargarlo.fuente
Obtuve esta excepción cuando configuré url en una consulta como "example.com/files/text.txt". He cambiado la URL a " http://example.com/files/text.txt " y esta excepción desapareció.
fuente
Y obtuve esta excepción por incluir un script can.js dentro de otro, por ejemplo,
fuente
En una aplicación MVC, recibí esta advertencia porque estaba abriendo una ventana de Kendo con un método que devolvía una Vista (), en lugar de una Vista parcial (). La Vista () intentaba recuperar de nuevo todos los scripts de la página.
fuente
Me estaba pasando en ZF2. Intenté cargar el contenido modal pero olvidé deshabilitar el diseño antes.
Entonces:
fuente
Al igual que @Nycen, también recibí este error debido a un enlace a Cloudfare. El mío era para el complemento Select2 .
para arreglarlo acabo de quitar
y el error desapareció
fuente
press F12
F1
."Don't show chrome Data Saver warning"
- configure esta casilla de verificación."Log XMLHTTPRequest"
- configure también esta casilla de verificación.Disfrutar
fuente
Esto se resuelve en mi caso.
Esta respuesta fue insertada en este enlace
/programming/28322636/synchronous-xmlhttprequest-warning-and-script
fuente
En mi caso, esto fue causado por el script flexible que era parte de la aplicación "Selecciones CDNJS" ofrecida por Cloudflare .
Según Cloudflare "Esta aplicación está en desuso en marzo de 2015". Lo apagué y el mensaje desapareció al instante.
Puede acceder a las aplicaciones visitando https://www.cloudflare.com/a/cloudflare-apps/yourdomain.com
NB: esta es una copia de mi respuesta en este hilo Advertencia de Synchronous XMLHttpRequest y <script> (Visité ambos cuando buscaba una solución)
fuente
Lo arreglé con los siguientes pasos:
fuente
En mi caso particular, estaba renderizando un Rails parcial sin el
render layout: false
cual estaba renderizando nuevamente el diseño completo, incluyendo todos los scripts en la<head>
etiqueta. Agregarrender layout: false
a la acción del controlador solucionó el problema.fuente
Para mí, el problema era que en una solicitud OK, esperaba que la respuesta ajax fuera una cadena HTML bien formateada, como una tabla, pero en este caso, el servidor estaba experimentando un problema con la solicitud, redirigiendo a una página de error, y, por lo tanto, estaba devolviendo el código HTML de la página de error (que tenía una
<script
etiqueta en alguna parte. Consola registró la respuesta ajax y fue entonces cuando me di cuenta de que no era lo que esperaba, luego procedí a hacer mi depuración.fuente
La pregunta se planteó en 2014 y es 2019, así que supongo que es bueno buscar una mejor opción.
Simplemente puedes usar
fetch
api en Javascript que le brinda más flexibilidad.por ejemplo, vea este código
fuente