2009-02-28 9 views
0

ich meine makewindows Funktion aus einer PHP-Datei wie so nenne:vorbei beliebiges HTML zu einem Popup-Fenster

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

Dieser richtigen HTML-Code generiert, der in einem popupwindow von $ html enthält die HTML-Ergebnisse. Zum Beispiel (die meisten der html hat snipped worden):

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

Nun, ich möchte ein Bild über den Link anklickbar machen, ein Bild anstelle von HTML angezeigt werden, mit der gleichen Methode.

ich eine $ imagehtml Variable in PHP gemacht, um wie so:

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

$ imageSrc das Ergebnis einer anderen Methode ist, aber immer ohne $ imageHtml

für ein Bild um eine gültige URL nicht vorbei zu makewindows sollte funktionieren (die Tatsache, dass es keine Standards Beschwerde html ist irelivant, zumindest, warum was ich versuche zu versagen. Die gleiche Zeile von HTML in einer eigenständigen HTML-Datei wird in jedem Browser fein angezeigt.)

Dies führt zu folgendem HTML:

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

Dies schlägt vollständig fehl. Es hat nichts mit dem Bildpfad zu tun, da überhaupt kein Fenster erstellt wird. Alles, was ich tue, ist die Variable zu ändern, sicherlich sollte das Fenster noch erstellt werden, unabhängig vom Inhalt des HTML?

dies nicht gelingt, auch wenn versucht zu passieren: blank, zum Beispiel definiert imagehtml wie folgt:

$imagehtml = "about:blank"; 

Ergebnisse in:

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

noch noch kein Fenster.

Antwort

0

Sie wollen etwas wie folgt aus:

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

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

Dies wird die richtige Codierung tun/zu entkommen.

+0

Warum ist das nötig, wenn die Quelle der Ausgabe korrektes HTML anzeigt? –

0

Sie machen wahrscheinlich etwas falsch.

Angenommen, Sie HTML in einen JavaScript-Funktionsaufruf innerhalb eines HTML-Attributs übergeben mögen:

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

Dann dies zu tun ist genug:

$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>'; 

Die var_export function wandelt den Wert in eine (PHP) äquivalenter Ausdruck und die htmlspecialchars function wandelt schließlich die HTML-Metazeichen in Zeichenreferenzen um.

Dies ist vielleicht nicht der eleganteste Weg, aber es funktioniert.

+0

Warum ist das notwendig, wenn die Quelle der Ausgabe korrektes HTML anzeigt? –

+0

Warum ist was notwendig? – Gumbo

+0

mit htmlspecialchars –

Verwandte Themen