我有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。
答案 0 :(得分:1)
如果您使用的是服务器端语言,则可能有一种方法可以转义特殊字符。
在PHP中,您可以使用htmlspecialchars(),它会将HTML中具有重要意义的某些字符转换为HTML实体(即&amp; to&amp;)。 它们仍将正确显示,您将能够复制和粘贴文本,但javascript不应该运行。
如果你需要一个纯粹的JavaScript解决方案,有人在这里回答https://stackoverflow.com/a/4835406/15000