Page 1 sur 1

compatibilité IE release 5 et plus

Posté : 17 déc. 2008, 17:46
par BeRoots
Salut la compagnie :)

je viens de finir un script de detection de donnée navigateur...
Ce dernier et totalement fonctionnel sous tout navigateur sauf IE... grrr!!!
Mon objectif est de faire en sorte de soumettre un formulaire "hidden" auto-remplie par le script JS pour avoir redirection à soumission, vers une autre vue (page).
voila la methode de soumission de mon formulaire:

Code : Tout sélectionner

document.getElementById('formJS').submit();
voici la balise form du formulaire:

Code : Tout sélectionner

<form id="formJS" action="<?php echo htmlentities('/fr/default/index/savebrowserinfos'); ?>" method="post">
la soumission du formuaire et redirection vers savebrowserinfos.phtml fonctionne sous touts navigateurs sauf les IE...

Si quelqu'un à une idée sur le pourquoi cela ne fonctionne pas sous IE ?
Merci d'avance ;)

Posté : 19 déc. 2008, 12:59
par BeRoots
ok j'ai remplacer par document.forms[0].submit(); pour voir...

mon problème est que j'ai un autre soucis dans mon script pour detecter des input de type hidden dans le form et de faire en sorte d'assigner des value à ces dernier avant de voir pour soumettre le formulaire...

pour ce qu'il en ai de cela, voici une version simplifier de mon script en erreur sous IE:

Code : Tout sélectionner

var getBrowserInfos = { start: function() { getBrowserInfos.autoComplementAndSubmit(); }, autoComplementAndSubmit: function() { for(var j=0; j<browser_vars.length; j++) { var key = browser_vars[j]; var browserValue = browser[key]; // ici la methode qui pose probleme var hiddenInput = document.getElementById(key); hiddenInput.value = browserValue; } document.forms[0].submit(); } } // on lance le script au domready window.addEvent('domready', getBrowserInfos.start);
voici le formulaire:

Code : Tout sélectionner

<form id="formJS" action="/fr/default/index/savebrowserinfos" method="post"> <input type="hidden" name="timezone" id="timezone" value="" /> <input type="hidden" name="resolution" id="resolution" value="" /> <input type="hidden" name="java" id="java" value="" /> <input type="hidden" name="director" id="director" value="" /> <input type="hidden" name="flash" id="flash" value="" /> <input type="hidden" name="pdf" id="pdf" value="" /> <input type="hidden" name="quicktime" id="quicktime" value="" /> <input type="hidden" name="realplayer" id="realplayer" value="" /> <input type="hidden" name="windowsmedia" id="windowsmedia" value="" /> <input type="hidden" name="cookie" id="cookie" value="" /> </form>
si quelqu'un peut me dire pourquoi ce script ne fonctionne pas sous IE...
suite à mes test de ce script, j'arrive à en deduire qu'un alert('coucou') paase avant le hiddenInput.value = browserValue; mais plus apres celui-ci
donc le script plante à la definition de la value dans l'input cible et ce que sous IE...
un alert('hiddenInput'); me renvoi null sous IE et [object HTMLInputElement] sous tout autre navigateur...

Si quelqu'un à un idée...
Merci d'avance ;)

Posté : 19 déc. 2008, 14:51
par Victor BRITO

Code : Tout sélectionner

// on lance le script au domready window.addEvent('domready', getBrowserInfos.start);
Je ne sais pas si tu utilises une bibliothèque JavaScript. Mais, sache que, pour l'ajout d'un événement en JavaScript (la méthode addEventListener si l'on suit le standard du DOM), Internet Explorer emploie la méthode propriétaire attachEvent, comme suit :

Code : Tout sélectionner

window.attachEvent ('on+nom de l'événement', fonction);

Posté : 19 déc. 2008, 15:24
par BeRoots
pourtant j'utilise mootools de cette maniere et il me pose aucun probleme sur IE comme Les autres navigateur...

pour en revenir au problème voici un paste de mon code au cas où... le script est totalement fonctionnel sur tout type de navigateur mais ne soumet pas mon formulaire sous IE et tourne en boucle infinie.... Cf http://pastebin.com/m603d57d4

j'ai essayé ceci pour IE mais rien ne fonctionne:
document.getElementById["formJS"].submit();
document.getElementsByName["formJS"].submit();
document.forms[0].submit();
document.forms["formJS"].submit();

une idée ?