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