今天做项目的时候遇到一个变态的问题,CKEditor 嵌入ROR 的时候出现了 一个回车产生2个br 标签的问题(2个回车产生4个br……),使段落之前的间距变大一倍。
CKeditor本身应该没有问题,为解决此问题,想了一个笨方法: 用JS的nextSibling 属性来查找是否有相邻的2个或者以上的br,有的话直接remove。 (用的是jQuery)。
初始代码:
var brs = $('.format_markdown_text br').size();
var fbr = $('.format_markdown_text br');
for(i=brs-1;i>=0;i--){
if(fbr[i].nextSibling.nodeName == "BR"){
$(fbr[i]).remove();
}
}发现只取到部分的br,查资料发现,firefox、opera、safari会把诸如空格换行之类的排版元素视作节点读取,所以在这些浏览器下只读取了部分br。
改进的代码:
var brs = $('.format_markdown_text br').size();
var fbr = $('.format_markdown_text br');
for(i=brs-1;i>=0;i--){
if(fbr[i].nextSibling.nodeName == "BR" || ($(fbr[i].nextSibling).val().match(/^[\s\r\n]*$/) && fbr[i].nextSibling.nextSibling && fbr[i].nextSibling.nextSibling.nodeName == 'BR')){
$(fbr[i]).remove();
}
}这样就圆满解决了 空格(或者多个)、回车等产生的问题。
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.