使用Javascript添加动态HTML的字符串问题
问题描述:
我正在使用PHP生成一个Javascript按钮,该按钮添加了复选框和其他一些HTML。使用Javascript添加动态HTML的字符串问题
什么是正确的方法来逃脱这些字符,以包括他们在onclick事件?
只见它建议转换“和”以ASCII值,但是这似乎并没有帮助
$tempOutput = "<a href='temp.txt'>\"Happy\"</a>";
$tempOutput = str_replace("'", "'", $tempOutput);
$tempOutput = str_replace('"', """, $tempOutput);
只是导致这个,如果你在使用前右呼应字符串:
<a href='temp.txt'>"Happy"</a>
和这个,如果你检查页面元素:
<a onclick="
var divTag = document.createElement('div');
divTag.innerHTML = '<a href='temp.txt'>"Happy"</a>';
document.getElementById('extraDiv').appendChild(divTag) ;
">test</a>
我也尝试只是一个根据extradiv的innerHTML,但在那里也没有成功。
答
我主要使用PHP的rawurlencode()和JavaScript的UNESCAPE():
<?php
$tempOutput = '<a href="temp.txt">'.htmlentities('"Happy"').'</a>';
?>
<a onclick="
var divTag = document.createElement('div');
divTag.innerHTML = unescape('<?php echo rawurlencode($tempOutput);?>');
document.getElementById('extraDiv').appendChild(divTag) ;
">test</a>
<div id="extraDiv"></div>
这也将避免与其他字符,例如错误换行符。
答
逃生这样
$tempOutput = str_replace(array("'",'"'), array("\'",'"'), $tempOutput);
+0
这工作了很简单的例子,但它有一个更复杂的例子再次抛出一个错误,但它是一个开始谢谢。 – Andrew 2011-06-14 12:36:49
谢谢。除了必须首先执行htmlentities()之外,这是有效的。我基本上不能这样做,因为HTML是从另一个源返回的。在将它放入onclick之前,我不会生成它。整个字符串的htmlentities()并不完全适用。基本上所有事情都可以,只要HTML中的任何文本都没有双引号即可。 – Andrew 2011-06-14 12:52:53