Passage de paramètre javascript sous format html

  • Auteur de la discussion conan76
  • Date de début

conan76

Habitué
bonsoir,


Je cherche comment passer du html à une fonction javascript exemple :

mafonctionJS('<img src="test.jpg">')


merci de votre aide.
 

conan76

Habitué
Simplement quand je passe des doubles quotes " le javascript n'en veut pas, je ne trouve pas le moyen de lui echapper ça.
 

conan76

Habitué
non quand je fais ce test :

PHP :
$imgPop = '<img src=\"\">';
$tBody.='<td class="f" onmouseover="montre(\''.$imgPop.'\');" onmouseout="cache();">'.$enr['name'].'</td>';

j'obtient dans le code html :
onmouseover="montre('<img src=\"\">');

en fait l'html pense que la fin du onmouseover se trouve au 1er " du src.
depuis hier soir je suis passer en simple quotes, mais je me retrouve maintenant bloqué quand j'ai ceci :

HTML :
montre('<img ALT=\'chargement\' src=\'preview.php?img=ftp/ferrari day\'s 2004/IMG_1607.jpg&img_x=150\' etc...

le JS reçoit :
<img ALT='chargement' src='preview.php?img=ftp/ferrari day's 2004/IMG_1607.jpg&img_x=150' ...

mais maintenant c'est le simple quote du nom du dossier qui me géne (ferrari day's), voilà pourquoi le plus simple serait de pouvoir faire passer le double quotes.

merci.
 

marsien

Grand Maître
ne met pas de simple quotes pour les attributs de ta balise img ; utilise des double quotes. Le mieux serait quand même de seulement passer les valeurs des attributs dans le onmouseover, puis de construire la balise image dans la fonction javascript. C'est moins lourd au chargement et plus facile à gérer sur la forme ;)
 

conan76

Habitué
Oui, c'est ce que je prévoyais au final, mais mon "infobulle" devait servir pour plusieurs choses (image et texte), j'ai pas voulu rebricoler un script infobulle du net qui fonctionne (pour le moment).

Je viens quand même de réussir(ce sera plus "pro" plus tard), voici comment j'ai procéder :

Coté PHP (Page client)
$vartmp = 'preview.php?img='.$imgname.'&img_x=150';
$imgPop = '<img alt=&quot;chargement&quot; src=&quot;'.$vartmp.'&quot; width=&quot;200&quot; height=&quot;200&quot; />';
$tBody.='<td class="f" onmouseover="montre(\''.$imgPop.'\');" onmouseout="cache();">'.$enr['name'].'</td>';

Coté JS j'obient le code html nickel

qui l'envoi au serveur pour généré la vignette "infobulle"

if (get_magic_quotes_gpc() )
$img = stripslashes($_GET['img']);
else
$img = $_GET['img'];
etc...

en fait j'avais 2 problèmes "mixer" quand j'envoyé le bon code html c'est le PHP pour la miniature qui poser problème du fait du quote de day's le fait fait de retiré le \ présent devant le 's je peut ensuite faire celà :

$img = 'e:\www\photos3\\'.$img;
$size = getimagesize($img);

Voilà.
Pour infos, je fais tout ceci pour avoir dans la partie admin de ma galerie, là où je défini quel fichier fera partie de tel ou/et tel galerie, un visuel au survol du nom de fichier.

Merci de votre aide !

 

tomboul

Nouveau membre
Pour passer un paramètre contenant du HTML dans une fonction javascript il faut éviter les doubles quote

écrire :
[cpp]$html="<img src='toto.png'>";
[/cpp]
plutôt que :
[cpp]$html='<img src="toto.png">';[/cpp]

puis ensuite il faut utiliser la fonction addslashes
ainsi si ta fonction construisant le pop est popinfo, tu construit ton pop comme ceci :

[cpp]$ref='<a href="test.php" onmouseover="popinfo(\''.addslashes($html).'\')" onmouseout="popout()"> .... </a>'[/cpp]

$ref peut contenir des doubles quote si on ne l'utilise pas comme paramètre pour une fonction javascript.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 845
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut