我正在尝试格式化一些糟糕的html输出到弹出窗口。 html存储在mysql数据库的一个字段中。
我一直在php中的行上执行json_encode和htmlspecialchars,如下所示:
$html = htmlentities(json_encode($row2['ARTICLE_DESC']));
并调用我的makewindows函数,它只是将html作为参数并使用withdocument.write,如下所示:
<p><a href='#' onclick=\"makewindows('".$html."'); return false;\">Click for full description </a></p>
这样就行了,就像生成一些html代码一样,如下所示:
http://www.nomorepasting.com/getpaste.php?pasteid=22823&seen=true&wrap=on&langoverride=html4strict
粘贴在那里,因为我不知道如何在SO中包裹行
问题是htmlspecialchars似乎没有剥离坏的html数据,因为没有创建弹出窗口。我用firebug收到的错误是
缺少)参数列表
之后然而,html超出了我的控制范围。
据我所知,我正在采取正确的步骤。如果我错过了什么,那是什么?
我的完整制作窗口功能:
function makewindows(html){
child1 = window.open ("about:blank");
child1.document.write(html);
child1.document.close();
}
答案 0 :(得分:1)
你不应该在函数调用中使用单引号。它应该是这样的:
<p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>
然后输出看起来像
<p><a href='#' onclick="makewindows("....."); return false;">Click for full description </a></p>
这是正确的。
答案 1 :(得分:0)
尝试以下方式:
$html = htmlentities(json_encode($row2['ARTICLE_DESC']),ENT_QUOTES);
我认为单引号默认不会转义。 不过我建议您在打开窗口之前将html保存在JavaScript变量中。