我正在使用PHP生成一个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上,但也没有成功.
解决方法:
我主要使用PHPs 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>
这也将避免其他字符的错误,例如换行符.