识别HTML代码

时间:2012-11-12 17:06:27

标签: javascript html

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

2 个答案:

答案 0 :(得分: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>标签

答案 1 :(得分:1)

不是真的。讲述HTML和文本之间的差异谈论HTML并不是一个小问题。

如果您希望输入文本,则处理文本而不是HTML。请勿使用innerHTML,使用createTextNodeappendChild / insertBefore