2009-02-28 5 views
0

J'appelle ma fonction de makeWindows à partir d'un fichier PHP comme ceci:passage html arbitraire dans une fenêtre pop-up

echo "<a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>"; 

Cela génère du HTML correct, ce qui se traduit par un popupWindow contenant le code html de html $. Par exemple (la plupart du html a été ciselée):

<a href="#" onclick="makewindows(&quot;<P align=center><SPAN style=\&quot;FONT-FAMILY: Arial\&quot;>&quot;); return false;">Click for more</a> 

Maintenant, je veux faire une image au-dessus du lien cliquable, pour afficher une image au lieu de html, en utilisant la même méthode.

J'ai fait une variable imagehtml de $ en php comme ceci:

$imagehtml = "<img src='".$imageSrc."' >"; 

$ IMAGESRC est le résultat d'une autre méthode, mais est toujours sans manquer une URL valide pour une image

passant imageHtml de $ à makewindows devrait fonctionner (le fait que ce ne soit pas la norme html est irelivant, au moins pour ce que j'essaie d'échouer.La même ligne de html dans un fichier html autonome s'affiche dans chaque navigateur.)

cela se traduit par le html suivant:

<a href="#" onclick="makewindows(<img src='removed.jpg' >); return false;"> 
<img src="removed.jpg" width="250" height="250"></a> 

Ceci échoue complètement. Cela n'a rien à voir avec le chemin de l'image, car aucune fenêtre n'est créée. Tout ce que je fais est de changer la variable passée, sûrement la fenêtre devrait toujours être créée, indépendamment du contenu du HTML?

cela échoue même si vous essayez de passer sur: blanc, par exemple la définition imagehtml comme suit:

$imagehtml = "about:blank"; 

résultats dans:

<a href="#" onclick="makewindows(about:blank); return false;">Click for full description </a> 

mais toujours pas de fenêtre.

Répondre

0

Vous voulez quelque chose comme ceci:

$str = '<img src="...">'; 

echo '<a href="#" onclick="makewindows(' 
    . htmlspecialchars(json_encode($str)) 
    . '); return false;">Click for full description</a></p>'; 

Cela fera le bon codage/fuite.

+0

pourquoi est-ce nécessaire lorsque la source de la sortie affiche html correct? –

0

Vous faites probablement quelque chose de mal.

Disons que vous voulez transmettre ce code html pour un appel de fonction JavaScript dans un attribut HTML:

<img src="removed.jpg" width="250" height="250"> 

Ensuite, faire cela suffit:

$html = '<img src="removed.jpg" width="250" height="250">'; 
echo '<a href="#" onclick="makewindows(' . htmlspecialchars(var_export($html, true), ENT_QUOTES) . '); return false;">Click for full description</a></p>'; 

Le var_export function convertit la valeur en un (PHP) expression équivalente et le htmlspecialchars function convertit enfin les méta-caractères HTML en références de caractères.

Cela peut ne pas être la manière la plus élégante, mais cela fonctionne.

+0

pourquoi est-ce nécessaire lorsque la source de la sortie affiche le code html correct? –

+0

Pourquoi est-ce nécessaire? – Gumbo

+0

en utilisant htmlspecialchars –

Questions connexes