页面换行大学问
页面的qtip显示需要换行显示,最初的代码:
var tip = v.replace(/\n/g,'</br>');
return '<span qtip="'+Ext.util.Format.htmlEncode(tip)+'">' + Ext.util.Format.htmlEncode(v) + '</span>';
代码思路:将传过来的字符串的 \n 转化为 </br>,用html解析即可显示
问题:正常情况下,的确是很ok的,但是遇到特殊字符后,就有问题了
比如:字符串为:<a>aaa</a>\n<a>bbb</a> 然后发现<a></a>都显示不出来了
分析:html将<a></a>解析为标签元素了。。。。
探寻之路: 既然将<a></a>解析了,那么将其再解析一下即可:
var encode = Ext.util.Format.htmlEncode;
encode(encode(v));
此时<a></a>是解析出来了,换行也有了,但是</br>也给解析出来了。。。
至少明白了一点:encode(encode())可以将字符串解析为html显示,且将其再转化为原始显示
经过上述的探寻,答案也浮出水面:
思路:现将字符串解析,在将‘\n’替换为 '</br>',再将其encode一次,这样</br>会被解析为换行符,字符串中本来的字符也会显示出来,不会被解析掉了。
encode(encode(v).replace(/\n/g, '</br>'));