换行符的添加小问题

用户有个需求,就是需要在标题上添加一个换行符号,以便可以自己控制标题的断句位置。比如说:2012年7月1日***主席在人民大会堂关于建军91周年上的讲话,这个标题很长,显示在网页上,如果字体再大一点,一行肯定是显示不完的,如果依赖自然换行,那有可能在“建”之前换行,也有可能在“1”之前换行,这样的话,句不成句,词不成词,对于一个比较严肃的标题来说是不可以这样,用户提出了要求,我的第一反应是加一个换行符“<br>”,但觉得这对用户来说有些专业了点,但好在用户也有些基础,而且<br>这个标签也不难记,就暂时用上了。一段时间之后问题出来了,加上这个标签在内容显示部分标题换行的问题得到解决了,可是在栏目之中,也就是在标题列表之中,<br>依然也是起作用的,也是要换行的。因此列表之中被弄的乱七八糟,有的一行,有的两行(当然都是要弄成一行的,太长了就截断显示省略号)。

面对新问题,我有了两点思考:

1,依然使用<br>,但只在内容显示的时候让其起作用,其余的地方要把这个标签过滤了,在网上我也找到了过滤html标签的方法。代码如下:

function removeHTMLTag(str) {
            str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
            str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
            //str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
            str=str.replace(/ /ig,'');//去掉 
            return str;
    }

只要在其他的地方都是用这样的一个方法来过滤标题,换行的问题就可以得到解决。这样做的缺点是:要找到其他所有可能出现标题列表的地方,而且还会影响效率。

最重要的原因,整个系统使用的freemarker标签是JeeCMS自己定义的,类似于list的功能都写的特别,很多个参数,短时间内搞不懂,根本不知道标题怎么显示的,无从过滤。因而只能退而求其次了,第二种办法。

2,把<br>换成一个占位符,这个占位符要不显示才行,但由于它的存在,我在前台可以知道要换行的位置何在,可以使用js代码把这个占位符替换了,也就是当我需要的时候我再把<br>给填上。现在的问题只有两个了:找到不显示的占位符和替换。问了好几个人,html标签中什么标签是不显示的,有人说&nbsp;这是个空白字符,但也是一个空格,标题上多了空格总不好看吧,不够完美。后来发现一个符号"shy;",不知道这个标签是干什么用的网上也查不出相关的说明,但可以肯定的一点是,这个标签不显示,那么这就能达到目的了。在需要断句的地方插入"shy;"——当然可以用一个js来实现插入,用户只需要点击按钮即可——,在标题显示的地方,再把"shy;"换成<br>,这样就可以实现用户的需求了。相关代码如下:

插入"shy;"的代码:

function insertText()
{ 
document.getElementById("content_title").focus(); 
document.selection.createRange().text+="­"; 
document.getElementById("content_title").blur(); 
} 

替换的代码如下:

$(function(){
var title = $("#contentTitle").html();
title = stripShy(title);
$("#contentTitle").html(title);
});
function stripShy(string){
var pattern = /­/;
return string.replace(pattern,'<br>');
}
contentTitle是标题显示的位置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值