是否有一个javascript函数可以识别字符串变量是否包含HTML代码?
我想避免这种情况,因为如果我使用innerHTML并且用户提交了类似<img src='link'>
的内容,那么它不会显示字符串而是显示真实图像......
我希望我解释一下
谢谢!
答案 0 :(得分:2)
你可以只替换3个非常特殊的字符:
&
:用于字形符号
<
:打开html标签的括号
>
:关闭html代码的括号
function make_safe(input) {
return input.replace("&", "&").replace(/(<?)([^<>]*)(>?)/g, function (a,b,c,d) {
if ((b+c+d).toLowerCase() === "<br>") return "<br>";
if (b === "<") b = "<";
if (b === ">") b = ">";
if (d === "<") d = "<";
if (d === ">") d = ">";
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
,使用createTextNode
和appendChild
/ insertBefore
。