2009-02-28 16 views
0

に任意のHTMLを渡す私はそうのようなPHPファイルから私のmakewindows関数を呼び出しています:ポップアップウィンドウ

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

これは、$ htmlのHTMLを含むpopupwindowになり、正しいHTMLを生成します。例(HTMLのほとんどが切り取られている)の場合:今すぐ

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

、私は同じ方法を使用して、HTMLの代わりに画像を表示するには、リンクのクリック可能な上に画像を作りたいです。

私はそうのようにPHPでの$ imagehtml変数を作っ:

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

$ imageSrcは別の方法の結果であるが、画像への$ imageHtmlを渡す

のための有効なURLを必ず常にあります私が試しているものが失敗している理由について、少なくとも標準的な苦情ではないという事実は、スタンドアロンhtmlファイル内の同じHTML行がすべてのブラウザに表示されます)

これは次のhtmlになります。

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

これは完全に失敗します。ウィンドウはまったく作成されないので、イメージパスとは何の関係もありません。私がやっているのは、渡された変数を変更することだけです.Htmlの内容にかかわらず、ウィンドウはまだ作成されるはずです。

この失敗してもおよそ合格しようとしている場合:例えば、以下のように定義imagehtmlを空白:

$imagehtml = "about:blank"; 

結果で:

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

依然として窓なし。

答えて

0

あなたはこのような何かをしたいです。

+0

出力のソースが正しいhtmlを表示するときにこれがなぜ必要ですか? –

0

おそらく間違っていると思います。

のは、あなたがHTML属性内のJavaScript関数呼び出しに、このHTMLを渡したいとしましょう:

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

var_export function(に値を変換します

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

はその後、これを行うことは十分ですPHP)同等の式であり、最後にhtmlspecialchars functionはHTMLメタ文字を文字参照に変換します。

これは最もエレガントな方法ではないかもしれませんが、機能します。これは、エスケープ/正しいエンコーディングを行います

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

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

+0

出力のソースが正しいhtmlを表示しているときに、なぜこれが必要ですか? –

+0

なぜ必要なのですか? – Gumbo

+0

htmlspecialcharsを使用 –