2

是否有一个 javascript 函数可以识别字符串变量是否包含 HTML 代码?我想避免这种情况,因为如果我使用 innerHTML 并且用户提交了类似的东西,<img src='link'>它不会出现字符串而是真实的图像......我希望我解释了谢谢!

4

2 回答 2

2

您可以只替换 3 个非常特殊的字符::
&用于字形符号
<:html 标签
>的左括号: html 标签的右括号

function make_safe(input) {
    return input.replace("&", "&amp;").replace(/(<?)([^<>]*)(>?)/g, function (a,b,c,d) {
        if ((b+c+d).toLowerCase() === "<br>") return "<br>";

        if (b === "<") b = "&lt;";
        if (b === ">") b = "&gt;";

        if (d === "<") d = "&lt;";
        if (d === ">") d = "&gt;";

        return b+c+d;
    }).replace(/\r?\n/g,"<br>");
}

// example:
mydiv.innerHTML = make_safe('<img src="/pic.jpg">');



我做了一个小魔术,所以 \r\n 变成了换行符,并且<br>保留了标签

于 2012-11-12T17:10:55.640 回答
1

并不真地。区分 HTML 和谈论 HTML 的文本并不是一个小问题。

如果您期待文本输入,则处理文本而不是 HTML。不要使用innerHTML,使用createTextNodeappendChild/ insertBefore

于 2012-11-12T17:08:54.813 回答