ExtJs 2.1 中的htmlEncode和htmlDecode不可逆

Ext JS 2.1 中的 Ext.util.Format 提供了HTML编码解码方法,如下所示:

 htmlEncode : function(value){ return !value ? value : String(value).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;"); }, htmlDecode : function(value){ return !value ? value : String(value).replace(/&amp;/g, "&").replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"'); },   

 

发现这两个方法不可逆。

比如,htmlEncode("&gt;") 结果是"&amp;gt;"。

但是反过来,htmlDecode("&amp;gt;")结果是">"。

注意这个htmlDecode方法。先处理了"&amp;",替换成"&",然后在处理后面三个符号时,刚替换产生的"&"有可能被再次处理。

正确的做法是,在htmlDecode中,最后处理"&amp;"。

你可能感兴趣的:(html,function,String,ext,ExtJs)