【问题标题】:Output script tags without jQuery, avoiding execution输出不带jQuery的脚本标签,避免执行
【发布时间】:2013-10-24 21:07:59
【问题描述】:

我有 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。

【问题讨论】:

    标签: javascript jquery html escaping


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我正在使用服务器端,但这必须在客户端完成。解决方案正是我一直在寻找但找不到的。
    猜你喜欢
    • 2016-09-22
    • 2014-11-20
    • 1970-01-01
    • 2011-03-31
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多