我正在从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("<P align=center><SPAN style=\"FONT-FAMILY: Arial\">"); 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>
但仍然没有窗口。
答案 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>';
这将执行正确的编码/转义。