输出没有jQuery的脚本标签,避免执行

时间:2013-10-24 21:08:00

标签: javascript jquery html escaping

我有JS通过AJAX调用远程服务器。响应包含与此类似的内容

<script>alert(document.getElementById('some_generated_id').innerHTML; ... </script>

用户复制响应并用于自己的目的。现在我需要确保在执行此操作时没有一个浏览器运行代码:

var response = '<scrip.....';
document.getElementById('output_box').innerHTML = response;

同样适用于任何HTML代码。我知道jQuery中的.text()将完全符合我的需要:

var response = '<scrip.....';
$('#output_box').text(response);

我正在寻找任何解决方案,包括但不限于:转义特殊字符,但正确显示它们;为标签添加零宽度空间(必须高效);部分输出。必须是纯粹的JS。

1 个答案:

答案 0 :(得分:1)

如果您使用的是服务器端语言,则可能有一种方法可以转义特殊字符。

在PHP中,您可以使用htmlspecialchars(),它会将HTML中具有重要意义的某些字符转换为HTML实体(即&amp; to&amp;)。 它们仍将正确显示,您将能够复制和粘贴文本,但javascript不应该运行。

如果你需要一个纯粹的JavaScript解决方案,有人在这里回答https://stackoverflow.com/a/4835406/15000