有的时候我们需要对目标字符串中的”<“|">"等进行编码或者解码。比如搜索功能附带导致的xss攻击。
1、我们先看看prototype 1.6.0中
注意:这个的api不对"和’进行编码
escapeHTML:function(){ var self = arguments.callee; self.text.data = this; return self.div.innerHTML; } /*内部依赖比较多啊*/ unescapeHTML:function(){ var div = new Element('div'); //调用stripTags 去掉html标签 div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }
2、下方展示的是参照tangram的对5种字符进行编码---- :&<>"'
/* encodeHTML --对目标字符串进行html编码 *@function* *@param {String} source* *@return {String} html编码后的字符串* ----对&<>"'进行编码 */ ZYC.string.encodeHTML = function(source){ return String(source).replace(/&/g,'&') .replace(/</g,'<') .replace(/>/g,'>') .replace(/"/g,'"') .replace(/'/g,'''); }; /* decodeHTML --对目标字符串进行html解码 *@function* *@param {String} source* *@return {String} html解码后的字符串* */ ZYC.string.decodeHTML = function(source){ var str = String(source).replace(/&/g,'&') .replace(/</g,'<') .replace(/>/g,'>') .replace(/"/g,'"'); return str.replace(/&#([\d]+);/g,function(_0,_1){ return String.formCharCode(parseInt(_1,10)); }); };