将任意html传递给弹出窗口

时间:2009-02-28 17:14:50

标签: php javascript

我正在从PHP文件中调用我的makewindows函数,如下所示:

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

这会生成正确的html,从而生成一个包含来自$ html的html的popupwindow。例如(大多数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传递给makewindows应该可行(事实上它不是标准投诉html是非常的,至少为什么我正在尝试失败。在每个浏览器中显示独立html文件中的相同单行html细。)

这导致以下html:

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

这完全失败了。它与图像路径无关,因为根本没有创建窗口。我正在做的就是更改传递的变量,无论html的内容是什么,当然仍然应该创建窗口?

即使尝试传递about:blank也会失败,例如定义imagehtml如下:

$imagehtml = "about:blank";

结果:

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

但仍然没有窗口。

2 个答案:

答案 0 :(得分:0)

你可能做错了什么。

假设您要将此HTML传递给HTML属性中的JavaScript函数调用:

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

然后这样就足够了:

$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将值转换为(PHP)等效表达式,htmlspecialchars function最终将HTML元字符转换为字符引用。

这可能不是最优雅的方式,但它有效。

答案 1 :(得分:0)

你想要这样的东西:

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

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

这将执行正确的编码/转义。