是否有一个 javascript 函数可以识别字符串变量是否包含 HTML 代码?我想避免这种情况,因为如果我使用 innerHTML 并且用户提交了类似的东西,<img src='link'>
它不会出现字符串而是真实的图像......我希望我解释了谢谢!
问问题
1504 次
2 回答
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>
保留了标签
于 2012-11-12T17:10:55.640 回答
1
并不真地。区分 HTML 和谈论 HTML 的文本并不是一个小问题。
如果您期待文本输入,则处理文本而不是 HTML。不要使用innerHTML
,使用createTextNode
和appendChild
/ insertBefore
。
于 2012-11-12T17:08:54.813 回答