Javascript, balise <script>, defer et IE !

Fermé
Pepcitron - 20 déc. 2010 à 11:03
 Pepcitron - 20 déc. 2010 à 17:23
Bonjour à tous, ami(e)(s) lecteur(s) !

Si je viens vers vous aujourd'hui, c'est pour exposer un problème que je n'arrive pas à comprendre...

Je développe un appli J2EE, avec côté client, des pages JSF.

J'ai quelques balises <script language="Javascript">...</script> qui me permettent de réaliser quelques traitement.

Tout fonctionne sans soucis avec Firefox. Mais sous IE (6, 7 et 8), j'ai un problème. Il n'y a aucune de mes fonctions qui fonctionnent et j'ai le droit au script error d'IE : Objet attendu.

Après avoir regarder le code source de la page, je me suis rendu compte qu'IE avait rajouter le tag defer dans toutes les balises scripts de la page.

Quelques recherche plus tard, j'apprends que ce tag "defer" permet d'exécuter le JS après que la page soit charger... Du coup, c'est normal que rien ne fonctionne car l'import des librairies JSF et Richfaces, se fait à l'aide des balises script (exemple: <script defer type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script>)

Il faut que ces import se fassent au chargement de la page, et pas après.

Bref, il me faut une solution pour qu'IE ne rajoute pas le tag "defer" dans mes balises <script>... Pourquoi ce tag "defer" s'insère sournoisement dans mes balises script ? Il doit bien avoir une explication et une solution, merci de m'éclairer avec vos lumière !

Je précise tout de même que j'ai déjà utilisé ses technos là pour développer des applis, et je n'ai jamais eu ce problème auparavant :-/

A voir également:

1 réponse

(re)Bonjour,

J'ai finalement trouvé la solution à mon soucis, merci à tous ceux qui ont essayé de m'aider à le résoudre.

Voici le soucis : ma page JSF s'affiche dans mon browser suite a une redirection AJAX. Or, il apparaît qu'une redirection AJAX interprète à sa sauce une page html. C'est pourquoi j'avais le droit au tag "defer" dans toutes mes balises <script>. Du coup, tout mon JS se chargeais dans n'importe quel ordre, ce qui faisais planter mes méthodes JS.

La solution : remplacer la redirection AJAX (a4j:commandButton) par une redirection normal (h:commandButton). Pour une redirection sans passage de paramètres, ça fonctionne. Mon problème a été résolue.

Une fois de plus, merci.
0