Bonjour,

J'ai une page A.php et un fichier de script B.js qui contient un script à dérouler sur onload de A.
Dans la page A, j'initialise un parametre qui sera nécessaire à l'exécution du Javascript d'initialisation.
Je le fais de cette façon :

<script type="text/javascript">
Variable="taratatère"
</script>

Le Javascript d'initialisation récupère cette Variable (et d'autres) et, selon certaines conditions propulse le contenu de Variable dans un textarea.

Bon... pas de problème SAUF quand taratatère est une chaine de caractères comportant des \r et ou \n

J'ai donc éssayé de contourner le problème en substituant dans le php les \r de taratatère par des \.
Ce qui donne un truc du genre :

<script type="text/javascript">
Variable="taratata \
et \
taratatère"
</script>

Cela marche bien avec Firefox mais Opera ne m'affiche rien dans la textarea (et la console d'erreur ne rapporte rien non plus)

Une idée ?
Modifié par aCOSwt (11 Feb 2009 - 11:25)
Voilà comme je comprend le pb :

le paramètre est initialisé par un echo php par ex :
 echo 'Variable="'.$_GET['param'].'"';


pour envoyer le tout, au final, ds un textarea la variable $_GET['param'] + d'autres variables, variable qui contient éventuellement un \r\n ou \n.

Dans ce cas la fonction nl2br s'impose :
echo 'Variable="'.nl2br($_GET['param']).'"';


cf doc de la fonciton : http://fr2.php.net/nl2br
Nice try PIR2...
Mais... justement. Ce que tu proposes ne fonctionne pas car cela déclanche une erreur JS :
unterminated string literal à cause des cr qui subsistent et sont interprétés par le navigateur en tant que tels.

Je suis allé jusqu'à faire :
str_replace("\r","\\",nl2br(stripslashes($...)))

Le code ci-dessus n'engendre plus d'erreur de l'interpréteur JS BUT...

Si mon js injecte la variable ainsi trafiquée dans le .value du textarea... évidemment... les <br> apparaissent littéralement.
Et
Si mon js injecte la variable ainsi trafiquée dans le .innerHTML du textarea... cela fonctionne sous FireFox mais Opera 9.25 / FreeBSD 6.3 n'affiche rien. (et pas de message sur la console d'erreur)
Modifié par aCOSwt (12 Feb 2009 - 11:31)
alors peut-être :

côté PHP
 rawurlencode('ton paramètre'); 


que tu récupère ensuite via ton $_GET et que tu décodes proprement avec la fonction javascript decodeURIComponent(), javascript 1.5+ ? Smiley murf

 echo 'Variable=decodeURIComponent('".$_GET['param'].')";

Qu'est-ce que ça donne ?? Smiley biggol
Modifié par PiR2 (12 Feb 2009 - 14:46)