Pbme de script sur Firefox 2.0

Eléphanteau du PHP | 43 Messages

10 janv. 2007, 22:51

Bonsoir,

Je viens d'isntaller Firefox pour effectuer des tests et j'ai une erreur sur un script qui fonctionne bien sous IE

But du script : Quand on clique sur un bouton une fenêtre popup s'ouvre avec les informations transmises par le script

Code : Tout sélectionner

Erreur : unterminated string literal Fichier source : javascript:agrandir_image('site_internet.jpg', 358, 'News essai', 'News publi%C3%A9e le 04/11/2006', '<p>%0D<br>Ceci est un essai de <strong>news</strong>. %0D<br></p>%0D<br><p>%0D<br>Pour l'italique <em>essayons</em> cela %0D<br></p>%0D<br><h1>&nbsp;Test avec Heading1</h1>%0D<br><h2>Test avec Heading2</h2>%0D<br><p>%0D<br>&nbsp;%0D<br></p>%0D<br>') Ligne : 1, Colonne : 85 Code source : agrandir_image('site_internet.jpg', 358, 'News essai', 'News publiée le 04/11/2006', '<p>
A priori quand je passe une variable dans laquelle se trouve des balises HTML (ici <p>) cela plante

Comment faire pour assurer la portabilité ?
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphant du PHP | 99 Messages

10 janv. 2007, 23:02

quel est le code complet?
Bientôt Bug Digger dominera le monde !
Enfin quand j'aurais le nom de domaine x]

Eléphanteau du PHP | 43 Messages

10 janv. 2007, 23:15

le code appellant
      <td width="38"><a href="javascript:agrandir_image('<?=$image?>', 358, '<?=$titre?>', '<?=$pied?>', '<?=$corps?>')"><img src="images/bouton_liresuite.gif" width="38" height="28" border="0"></a></td>
et le détail du code javascript appellé

Code : Tout sélectionner

// affiche les news en surimpression // avec le titre, l'image, la news // 4 arguments : le fichier image, sa largeur en pixels, le titre (en haut) et le corps de la news function agrandir_image(fimage, largeur_image, titre, soustitre, corps) { // reinitialise le layer init_layer(); if (obj_layer) { larg_image = largeur_image; cache = false; var ch_texte = "<table cellspacing='0' cellpadding='4' border='0' bgcolor='" + _couleur_fond + "'>"; // affiche le titre en haut ch_texte += affiche_titre(titre); // affiche l'image ch_texte += "<tr> <td width='350'><p class=newst>"+ corps +"<br><br></p><i style='font-size:13;'><a href='javascript:fermer()'>Fermer la fenêtre</a></i></font></td>" ch_texte += "<td width='358' align='center'" + (_bordure_titre ? " colspan='2'>" : ">") + "<img src='" + _dir_images + fimage + "' border='0'></td></tr>"; // affiche en bas le sous-titre s'il existe if (soustitre) ch_texte += affiche_soustitre(soustitre); ch_texte += "</table>"; // replace le layer, si on a fait défilé la fenêtre scroll_layer(); // affecte ch_texte au contenu du layer contenu_layer(ch_texte); } }
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphanteau du PHP | 43 Messages

10 janv. 2007, 23:17

c'est bien

Code : Tout sélectionner

td width="38"><a href="javascript:agrandir_image('<?=$image?>', 358, '<?=$titre?>', '<?=$pied?>', '<?=$corps?>')"><img src="images/bouton_liresuite.gif" width="38" height="28" border="0"></a></td>
mauvais copier/coller dans le message précédent
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphant du PHP | 99 Messages

10 janv. 2007, 23:32

cette fonction n'a pas l'air d'être déclarée:

Code : Tout sélectionner

init_layer();
t'est sur d'avoir mis tout le code?

Eléphant du PHP | 136 Messages

11 janv. 2007, 09:32

apparemment le > de <p> est interprêté comme fermant <a href

essaies ta ligne comme suit
<td width="38"><a href=" javascript:agrandir_image('<? print $image; ?>', 358, '<?=$titre?>', '<?=$pied?>
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Mammouth du PHP | 1885 Messages

11 janv. 2007, 09:48

Tu sembles plutôt avoir un problème de guillemets.

Ceci: Pour l'italique
Tu devrais faire: Pour l\'italique

L'apostrophe se confond avec le délimitateur de chaine javascript.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 43 Messages

11 janv. 2007, 21:18

apparemment le > de <p> est interprêté comme fermant <a href

essaies ta ligne comme suit
<td width="38"><a href=" javascript:agrandir_image('<? print $image; ?>', 358, '<?=$titre?>', '<?=$pied?>
J'ai remplacé le = par un print, sous IE cela fonctionne, sous Firefox, lj'ai toujours la même erreur.

J'ai testé avec une news sans apostrophe j'ai le même résultat.

Je n'ai pas mis tout le code pour éviter d'alourdir le message mais la fonction
init_layer();
est bien définie.

La seule solution serait elle de passer l'info sans le formatage HTML ?
Dans ce cas comment reformater le texte après ?
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphant du PHP | 136 Messages

12 janv. 2007, 09:59

apparemment c'est le signe %0D qui n'est pas interprêté avec firefox

en local sur mon PC j'ai le même type de pb si je fais un copier-coller de la barre d'adresses de firefox et que je le colle dans la barre d'adresse de IE j'ai un message d'erreur
les espaces et les guillemets ne sont pas compatibles par exemple.

regardes ce que signifie au juste ce %0D et essaies en le remplaçant par autre chose
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Eléphant du PHP | 136 Messages

12 janv. 2007, 10:08

je viens de voir qu'il s'agit surement du signe + qui est le symbole de concaténation en javascript.
donc pour résoudre ton pb il faudrait que tu fasses un ereg_replace de + par . pour passer de l'un à l'autre.

Ceci est une piste, pas une affirmation absolue.
en tout cas cela n'a pas à voir avec les balises html puisque <p> est restitué
bon courage
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Eléphanteau du PHP | 43 Messages

12 janv. 2007, 10:50

Merci pour tes réponses, je ferai mes tests ce soir
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphanteau du PHP | 43 Messages

13 janv. 2007, 23:49

Bon, je crois avoir compris le problème mais je n'ai pas encore la solution.

En fait, les retours à la ligne sont remplacés sous Firefox uniquement par des %OD... et avec ce caractère ça fonctionne pas.

J'ai bien essayé de faire
	$corps=str_replace("\n", "<br>", $row[corps]);
mais ça ne fait rien de plus.
D'ailleur je ne suis pas sur qu'en base les retours à la ligne soient stockés en \n

Là ce soir je ne vois pas de solution au problème...donc si vous pouvez éclairer ma lanterne ce serait le bienvenue. :cry:
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 janv. 2007, 01:07

nl2br() :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 43 Messages

14 janv. 2007, 10:31

nl2br() :-k
ne fonctionne pas mais .....
	$corps = preg_replace("/\\r\\n|\\n|\\r/", sprintf("% -".(5+$num)."s","<BR>\\n"), $row[corps]);	
lui fonctionne
je clôture donc le post. Merci à tous pour votre aide
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]