/ / Javascript met à jour l'interface utilisateur uniquement lorsque alert () est utilisé dans Internet Explorer avec AJAX - javascript, ajax, internet-explorer, interface utilisateur

Javascript met à jour l'interface utilisateur uniquement lorsque alert () est utilisé dans Internet Explorer avec AJAX - javascript, ajax, internet-explorer, interface utilisateur

J’ai un problème dans Internet Explorer, cela fonctionne très bien avec Firefox.

J'ai une fonction de script Java qui met à jour l'interface utilisateur(Contenu de l'écran) appelé avant la fonction AJAX. Mais il ne met pas à jour l'interface utilisateur tant qu'une invite de boîte d'alerte n'est pas utilisée. Sans boîte d'alerte, il ne met pas à jour l'interface utilisateur avant la fonction AJAX. Il met à jour l'interface utilisateur après la fonction AJAX même s'il est appelé avant la fonction AJAX

Si j'utilise le code suivant, le UpdateUI () ne "tmettre à jour l'interface utilisateur avant l'appel de fonction AJAX, il met à jour l'interface utilisateur après l'appel de fonction AJAX. Je veux qu'il mette à jour l'interface utilisateur avant l'appel de fonction AJAX (en fait, l'affichage d'une barre de chargement avant l'appel AJAX)

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

// AJAX function call here with Async = false

Mais si j'utilise le code suivant, UpdateUI () met à jour l'interface utilisateur avant l'appel de la fonction AJAX, mais cette méthode inclut une alerte. Je ne veux pas utiliser alerte

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

alert("hellow");

// AJAX function call here with Async = false

Cela fonctionne bien dans Firefox mais pas dans Internet Explorer 8

Réponses:

10 pour la réponse № 1

Les navigateurs ne redistribuent généralement pas (actualisent) l’UIquand il y a un thread JS actif. Il attend jusqu'à ce qu'il ait vidé tous les événements de sa file d'attente avant d'effectuer une redistribution. Pensez à cela comme à une boucle unique dans laquelle le navigateur doit exécuter tous ses événements.

La redistribution a généralement la moindre priorité dans certainsCependant, vous pouvez forcer le navigateur à rediffuser en demandant certains attributs à des éléments DOM tels que getComputedStyle ou offsetX / y, etc. Fondamentalement, toute demande nécessitant que le navigateur organise la mise en page de l'interface utilisateur entraîne une refondation.

Ce est le meilleur article que j’ai trouvé jadis lorsque j’étais confronté à un problème similaire.

Le truc le plus simple et le plus sûr que je puisse suggérer estpour diviser votre code en deux méthodes et appelez la méthode qui nécessite une refusion préalable dans un délai d’expiration après 0 mois. Cela donne au navigateur un répit pour effectuer une refusion avant d'appeler method2. Cela fonctionne exactement comme le truc alert () que vous avez essayé et que vous avez trouvé efficace.