Sinon il y avait peut-être un moyen de "tricher" un peu en faisant :
button.onmousedown la on desactive le bouton
button.onmouseup et la on execute le reste de la fonction.
Pas sur que ça règle le problème de "reflow"...mais bon, j'aurais tenté ça.
Version imprimable
Sinon il y avait peut-être un moyen de "tricher" un peu en faisant :
button.onmousedown la on desactive le bouton
button.onmouseup et la on execute le reste de la fonction.
Pas sur que ça règle le problème de "reflow"...mais bon, j'aurais tenté ça.
Effectivement sa à marché voila ma nouvelle fonction principal :
:merci: beaucoup Mr Watilin vous me sauvez une autre après midi de cassement de tête :ccool:Code:
1
2
3
4
5
6
7
8
9
10
11
12 function ajouter_trier(src , dest ) { change_save_button('desactivate'); window.setTimeout(function() { ajouter(src , dest); sortSelect (dest); change_save_button('activate'); }, 10); // tas 10ms pour faire ton reflow, feignasse }
Je crois que j'ai compris ce qui te pose pb
lorsque tu enchaine
desactiver_bouton
traitement_long
activer_bouton
les choses s'exécute bien ainsi et ton bouton est désactivé
mais l'apparence du bouton ne changera que l'orsque l'évènement sera traité
c'est a dire lorsque le navigateur va faire un refresh de ce que tu à modifié
Or dans ton cas ton script ne rends pas la main à l'utilisateur donc tu ne vois rien.
pour les traitement long comme ça je fais une fonction qui traite un lot et non la totalité des données
lorsqu'elle à fini son lot elle rends la main
un timer viens relancer la fonction pour un autre lot
lorsque tous les lot sont fait le timer est détruit
ainsi le traitement se passe en tache de fond et l'utilisateur peut continuer à travailler sur autre chose.
du coup au premier appel
disabled des éléments à bloquer
constitution du timer
pour tous les appels
traiter un paquet de donner
vérifier qu'il reste des données
si plus de donné suppression du timer
activer les éléments
ça rends l'interface plus fluide
en DOM/HTML5 on pourra avoir des "thread"
A+JYT