/ / Javascript actualiza la interfaz de usuario solo cuando se usa alerta () en internet explorer con AJAX - javascript, ajax, internet-explorer, interfaz de usuario

Javascript actualiza la interfaz de usuario solo cuando se usa alerta () en Internet explorer con AJAX - javascript, ajax, internet-explorer, interfaz de usuario

Tengo un problema en Internet Explorer, funciona bien con Firefox.

Tengo una función de script java que actualiza la interfaz de usuario(Contenido de la pantalla) que se llama antes de la función AJAX. Pero no actualiza la interfaz de usuario hasta que se utiliza un aviso de cuadro de alerta. Sin el cuadro de alerta, no actualiza la interfaz de usuario antes de la función AJAX. Actualiza la interfaz de usuario después de la función AJAX, incluso si se llama antes de la función AJAX

Si uso el siguiente código, UpdateUI () no lo haceactualizar la interfaz de usuario en absoluto antes de la llamada a la función AJAX, actualiza la interfaz de usuario después de la llamada a la función AJAX. Quiero que actualice la interfaz de usuario antes de la llamada a la función AJAX (en realidad estoy mostrando una barra de carga antes de la llamada AJAX)

UpdateUI(); // java script function, it just updates inner HTML of a DIV

// AJAX function call here with Async = false

Pero si uso el siguiente código, UpdateUI () actualiza la interfaz de usuario antes de la llamada a la función AJAX, pero este método incluye un aviso de alerta. No quiero usar alerta

UpdateUI(); // java script function, it just updates inner HTML of a DIV

alert("hellow");

// AJAX function call here with Async = false

Está funcionando bien en Firefox pero no en Internet Explorer 8

Respuestas

10 por respuesta № 1

Los navegadores no suelen hacer reflujo (actualizar) la interfaz de usuariocuando hay un hilo JS activo. Espera hasta que haya vaciado todos los eventos de la cola de eventos ts antes de realizar un reflujo. Piense en esto como un bucle de un solo hilo en el que el navegador tiene que realizar todos sus eventos.

El reflujo usualmente recibe la menor prioridad en ciertosSin embargo, puede forzar el reflujo del navegador solicitando ciertos atributos en elementos DOM como getComputedStyle o offsetX / y etc. Básicamente, cualquier solicitud que requiera que el navegador diseñe la IU para responder realizará un reflujo.

Esta es el mejor artículo que encontré en algún momento cuando me enfrentaba a un problema similar.

El truco más fácil e infalible que puedo sugerir espara dividir su código en dos métodos y llamar al método que requiere un reflujo previo en un tiempo de espera después de 0mills. Esto le da al navegador un respiro para realizar un reflujo antes de que llame a method2. Esto funciona exactamente igual que el truco de alerta () que probaste y encontraste funcionando.