function SanitizeInput(input) {
input = input.replace(/</g, "<");
input = input.replace(/>/g, ">");
return input;
}
document.write(SanitizeInput("Test!<marquee>bibble</marquee>"));
如果您将其弹出到jsfiddle.net,结果为Test!<marquee>bibble</marquee
,而不包含尾随&gt;
有谁能解释我做错了什么?
编辑:用(和)替换它似乎完美无缺
答案 0 :(得分:3)
您的布局/文档中必须有其他内容影响这一点,您的代码本身也能正常运行,you can test it here。
答案 1 :(得分:3)
你没有做错任何事。您使用的功能会将所有<
替换为<
,将>
替换为>
。只是document.write将已清理的文本添加到HTML文档中,实体将转换回<
和>
。
只需尝试alert
而不是document.write
。
如果您确实希望在页面中显示<
,则应对文本进行“双重清理”。
input = input.replace(/</g, "&lt;");
在旁注中,您可以链接替换呼叫,如下所示:
input = input.replace(/</g, "<").replace(/>/g, ">");
希望你觉得这很有用,
阿林
答案 2 :(得分:1)
如果您正在尝试清理输入,请尝试这样的操作 - http://xkr.us/articles/javascript/encode-compare/