0

JavaScript 将 my<转换为&gt;. 我想提醒它,但我的消息带有编码标记,例如@#&amp;*()}{&gt;?&gt;?- 如何正常显示它防止作为 HTML 代码执行?

<span id="ID" onClick="alertIt(this.id);">

    <p>Some string with special chars: ~!@#&*()}{>?>?>|{">@#$#^#$</p>

    <p>Why when clicked it gives something like this:</p>

    <p>'<br>
    Some string with special chars: ~!@#&amp;*()}{&gt;?&gt;?>|... and so on
    <br>'</p>

</span>

<script type="text/javascript">

function alertIt(ID)
{

    var ID = ID;
    var content = document.getElementById(ID).innerHTML;

    alert(content);

}

</script>
4

3 回答 3

1

使用innerText而不是innerHTML. http://jsfiddle.net/WVf95/

于 2012-10-15T11:47:24.637 回答
0

您的问题是您使用错误的方法来获取要显示的文本alert()

某些字符在 HTML 文本中是非法的(它们用于 HTML 标记和实体)。innerHTML将确保文本正确转义(即您可以看到标签和转义文本)。

如果您想在 中查看标签和文本alert(),则没有解决方案。

如果您只想要文本,那么您将不得不自己提取它。对此没有内置支持。实施起来也不是很简单。我建议在您的页面中包含jQuery;然后你可以得到文本:

function alertIt(ID) {
    alert($(ID).text());
}
于 2012-10-15T11:46:32.273 回答
0

使用textContentinstaed of innerHTMLorinnerText是一种解决方案。

于 2012-10-15T12:42:25.757 回答