Bonjour
Alors, dans la série IE me fait des trucs plus qu'incompréhensible voici un nouvel épisode...
Avant tout, je tiens a préciser que tout fonctionne nickel chrome sous FF et consorts
Alors voila le topo :
J'ai un site multilangue utilisant pas mal la technologie dite "ajax", avec un menu en flash qui lance des fonctions javascript qui rafraichissent des morceaux de page.
En haut a droite, j'ai les liens de changement de langue comme ceci :
Jusque la je pense qu'il n'y a pas de soucis...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <a href="javascript:void(0);" onclick="changeLang('nl');" class="langlink">NL</a> <a href="javascript:void(0);" onclick="changeLang('fr');" class="langlink">FR</a> <a href="javascript:void(0);" onclick="changeLang('en');" class="langlink">EN</a>
Ma fonction changeLang est celle-ci :
Sachant que NewAjax() me renvoye simplement un objet xmlhttp (ouais je sais pas terrible comme nom de fonction)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function changeLang(lang) { var mypage=NewAjax(); var myurl="changelang.do.php?lang="+lang; mypage.open("GET", myurl); mypage.onreadystatechange = function() { if (mypage.readyState == 4 && mypage.status == 200) { clickMenu(currentPage); //rappel menu var mymenu=NewAjax(); mymenu.open("GET", "menu.php"); mymenu.onreadystatechange = function() { if (mymenu.readyState == 4 && mymenu.status == 200) { $('rappelmenu').innerHTML=mymenu.responseText; } } mymenu.send(null); } } mypage.send(null); }
Le script appelle donc une page "changelang.do.php" qui s'occupe simplement de changer la variable de session php de langue.
Une fois cete langue changée, il lance clickMenu(currentPage) cela a pour effet de recharger la page que l'on visite (le bout de page plutot), cela change de langue grace a la variable de session modifiée juste avant
Enfin, une derniere requete est faite vers la page "menu.php" pour mettre a jour le rappel du menu de bas de page (le menu étant en flash, je voulais ce rappel au cas ou qqun n'a pas flash )
Tout ca fonctionne à merveille sous FF and co, sous internet explorer c'est autre chose... et je ne capte vraiment pas
En fait sous IE, tout se passe bien, mais seulement la premiere fois que l'on click sur une langue... Je veux dire par la, on peut passer du FR au NL, puis du NL au EN, puis meme du EN au FR ensuite si on veut, mais le lien ne fonctionne que la premiere fois qu'il est cliqué !
J'ai peur de mal me faire comprendre alors j'insiste, cela marche UNE FOIS PAR LIEN...
Le pire, encore, la fonction est bien lancée quand meme ! (j'ai testé avec des alert()) Encore mieux, les requetes se passent sans encombre, la réponse est bien recue, on dirait simplement que les 2 "innerHTML" ne veulent plus fonctionner...
Enfin, j'y comprends quedalle...
Dernière chose, une fois les liens "bloqués" (bref quand on a cliqué une fois dessus), le refresh n'y changera rien ! rien de tout ca ne refonctionne tant qu'on a pas coupé et relancé IE ! C'est quoi cette folie sérieux ?
Merci d'avance pour vos éclaircissements...
ps: $('rappelmenu') est un raccourci pour document.getElementById('rappelmenu') avec la librairie js prototype.
ps2: désolé d'avoir fait si long...
xbox: ok elle est nulle celle la, je sors...
Partager