您确实需要确保避免这些情况,因为它引入了非常难以预测的条件。
尝试向函数添加额外的变量输入。
function someFunction(userInput, isEncoded){
//Add some conditional logic based on isEncoded
$someJqueryElement.text(userInput);
}
如果您查看 fckEditor 之类的产品,您可以选择编辑源代码或使用富文本编辑器。这避免了对自动编码检测的需要。
如果您仍然坚持自动检测 html 编码字符,我建议您使用 index of 来验证某些关键短语是否存在。
str.indexOf('<') !== -1
上面的这个例子将检测 < 字符。
~~~在此行下方编辑后添加了新文本。~~~
最后,我建议看看这个答案。他们建议使用解码功能和检测长度。
var string = "Your encoded & decoded string here"
function decode(str){
return decodeURIComponent(str).replace(/</g,'<').replace(/>/g,'>');
}
if(string.length == decode(string).length){
// The string does not contain any encoded html.
}else{
// The string contains encoded html.
}
同样,这仍然存在用户通过输入那些特殊编码的字符来伪造进程的问题,但这就是 html 编码。因此,一旦出现这些字符序列之一,就假设 html 编码是正确的。