我正在使用TinyMCE来允许我的用户创建自己的网页。我的目标是让人们在编辑器中输入的内容与它发布的页面完全一样。我几乎得到了它,但是如果用户在句子之间放置两个空格,则Tinymce会添加
。显然,在编辑器中,它会折叠
,如果它位于一行的开头,那么每一行都是在编辑器的左侧。但是,在完成的页面中,这会产生“p”标记中行开头有空格的情况。我可以删除
,但它在编辑器中的外观与最终页面不同。
是否有人知道如何在
标记的行的开头折叠P
?或者有没有办法在TinyMCE中以不同的方式格式化,以便编辑器和最终页面看起来完全相同?谢谢!
答案 0 :(得分:1)
没有办法“崩溃”它。您必须使用REGEX或字符串替换删除它。
答案 1 :(得分:1)
正如Diodeus所说,你不能折叠一个角色,如果你想要摆脱它,你将不得不将其剥离。 许多浏览器会将一行中多个输入的空间“压缩”到一个单独的空间。这意味着即使用户输入了15个空格,也只有一个可见空间。这就是为什么tinymce进入受保护空间的原因。现在,输入的所有空格都将以不同类型空间的价格显示。
更新:插入范围并检查其位置的示例代码。总结为“左”的值将是你感兴趣的
var ed = this.editor, box = null;
if ( $(ed.getBody()).find('p:first').css('line-height') != 'normal'){
lineHeight = $(ed.getBody()).find('p:first').css('line-height') ;
}
else {
lineHeight = $(ed.getBody()).find('p:first').css('min-height');
}
var lineHeight = lineHeight.substr(0, lineHeight.length -2 );//box.height;
var rng = ed.selection.getRng();
rng.collapse(true);
bm = ed.selection.getBookmark();
$marker = $(ed.getBody()).find('#'+bm.id);
var elem = ed.getDoc().getElementById(bm.id+'_start');
box = elem.getBoundingClientRect();
var doc = ed.getDoc(),
docElem = doc.documentElement,
body = ed.getBody(),
win = ed.getWin(),
clientTop = docElem.clientTop || body.clientTop || 0,
clientLeft = docElem.clientLeft || body.clientLeft || 0,
scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
top = box.top + scrollTop - clientTop,
left = box.left + scrollLeft - clientLeft;
// set Bookmark
ed.selection.moveToBookmark(bm);