Compatibilité IE – Firefox

Ayant jusqu’ici travaillé quasi exclusivement sur Firefox, j’ai tenté la compatibilité sous IE. J’ai donc bien sur rencontré plusieurs problèmes:

Problèmes :

1- j’ai un formulaire avec un champ inputText. Quand je fais ‘Enter’ sur ce champ sous Firefox cela lance direct l’action de mon bouton au type ’submit’ MAIS sous IE : rien, j’ai l’impression qu’il recharge la page.

<h:inputText id="annee" value ="#{rechercheController.annee}" size='4' 
maxlength='4' onkeyup="javascript:verifAnnee();"/>
<FONT COLOR="RED"><h:outputText id="anneeAlert" value=""/></FONT>
...
<h:commandButton id="validButton" action="#{rechercheController.chercher}"
 type="submit" value="Rechercher" />

...

<script language='javascript'>
function verifAnnee() {
        if(document.getElementById("formRecherche:annee").value=='') {
        document.getElementById("formRecherche:anneeAlert").innerHTML=
                            "Veuillez entrer une année";
        }else{
        document.getElementById("formRecherche:anneeAlert").innerHTML='';
        }
}

</script>

 

2-Je fais du transfert de fichiers pdf générés à la volée. Je passe par une servlet qui met l’objet (Document itext) en session. Sous Firefox, tout se passe bien, il me demande si je veux l’enregistrer ou l’ouvrir: parfait. Sous IE soit (suivant la page de création du pdf : j’ai deux pages qui propose une création de pdf) il me dit ‘le fichier ne peut être ouvert voulez vous l’enregistrer’ soit il l’ouvre direct sous Acrobat reader qui plante.

 

3-Sur une de mes pages qui génère un pdf, au moment du clic sur le lien j’affiche un gif (permettant à l’utilisateur de comprendre qu’il se passe quelque chose), puis je lance l’action de création du fichier. Sous Firefox, bien sur, tout marche. Sous IE, le gif s’affiche mais n’est pas animé; le fait qu’une action soit déclenchée après bloque l’animation. Voici le javascript qui affiche le gif puis qui lance l’action :

 

document.getElementById("waitbar").style.visibility = 'visible';
document.getElementById('formliengeneration:linkpdf').onclick();

 

 

Solutions :

1- J’ajoute le javascript suivant à ma page xhtml:

document.forms['maform'].onkeypress =
new Function("{var keycode;if (window.event) keycode = 
window.event.keyCode;else if (event) keycode = 
event.which;else return true;if (keycode == 13) { 
document.getElementById('maform:validButton').click();
return false; } 
else  return true; 
}");

et ça marche.

Le problème venait du fait que JSF ne gère pas la validation automatique des formulaires par la pression de la touche ENTER. Cela marche avec Firefox, car celui-ci, depuis une mise à jour, s’en charge à la place du code javascript ci-dessous, qui résout le problème.

 

2- Il faut mettre ‘application/force-download’ en ‘type MIME’
et ‘attachment’ en ‘Content-disposition’
du coup; et Firefox et IE demandent ce que l’on veut faire du fichier

 

 

3-En fait, le gif n’est plus animé sous IE, car celui-ci considère qu’après le clic, on a changé de page, donc il arrête l’animation du gif en attendant la réponse.

Aucune solution pour les gif ; j’ai donc remplacé le gif par une animation flash faite avec un petit logiciel libre: e-anim
et voila, le tour est joué

Laisser un commentaire