有的时候我们需要对目标字符串中的”<“|">"等进行编码或者解码。比如搜索功能附带导致的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));
	});
};