要当安静的女子

导航

页面换行大学问

页面的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>'));

 

posted on 2017-07-24 20:30  码啾码  阅读(155)  评论(0编辑  收藏  举报