Salut,
j'ai un problème "un peu" similaire, mais impossible de le résoudre malgré mes multiples tentatives.
J'ai (en gros, je ne mets que le code intéressant mais je peux donner plus de détails si besoin) :
0°) une page page0.php qui affiche un tableau, lors du clic sur une case on affiche un texte (ça fonctionne bien) dans un autre tableau (<td id='info'>) d'un autre tableau et normalement (car ça ne fonctionne pas) un texte avec lui même un evenement onmouseover dans une autre case (<td id='reports'>)
1°) une page page.php qui me renvoie un texte contenant des doubles quotes, disons
page.php
<?php echo '"mon texte"'; ?>
C'est ce texte qu'on veut voir dans le onmouseover
2°) un script javascript qui récupére ce texte (un tableau en fait, contenant des liens lui même) et doit l'afficher dans une boite au survol du texte dans <td id='reports> :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <script language="JavaScript">
function mettre_lien(http_request){
// case où afficher le lien
tdrep=document.getElementById('reports');
// recuperation de la reponse du serveur, on enleve les retours à la ligne (pour test)
toto=http_request.responseText.replace(/\n/g,"");
// dans un script, creation d'une variable contenant le texte recupere
chaine="<script type='text/javascript' language='JavaScript'> var aaa='"+toto+"';alert(aaa);</script>";
// creation du lien avec les evenements associes
chaine=chaine+"<a style='cursor:pointer;'";
chaine=chaine+' onmouseover="ddrivetip(aaa);" onmouseout="hideddrivetip()">';
chaine=chaine+"Rapports<a>";
// on remplit la case avec le texte cree ci dessus
tdrep.innerHTML=chaine;
}
</script> |
Ce qui se passe : le texte "Rapports" est bien affiché mais le onmouseover plante car il ne trouve pas "aaa". Je me dis que c'est parce que les scripts contenus dans ce innerHTML n'est pas interprété par le browser (c'est ça???) et que seul le moteur graphique traite ce innerHTML.
J'ai essayé "basiquement" de ne pas passer par aaa :
chaine=chaine+' onmouseover="ddrivetip('+http_request.responseText+');" onmouseout="hideddrivetip()">';
Mais les doubles quotes faisait planter l'intepretation de la chaine après les premiers "
J'ai essayé aussi :
chaine=chaine+' onmouseover=ddrivetip('+http_request.responseText+'); onmouseout="hideddrivetip()">';
mais en affichant la source ensuite sous firefox, je constatais le même problème puisque la source contenait de nouveau un " avant le ddrivetip : il semble que firefox ajoute ce double quote s'il manque...
Bon, j'imagine que c'est pas très clair, je peux expliquer plus si besoin.
Quelqu'un peut-il m'aider?
Partager