2

我正在使用 TinyMCE 允许我的用户创建自己的网页。我的目标是让人们在编辑器中输入的内容看起来与它发布的页面完全一样。我几乎明白了,除了 Tinymce 添加了一个 if 用户在他们的句子之间放置两个空格。显然,在编辑器中, 如果它位于一行的开头,则它会折叠,以便每一行都一直靠在编辑器的左侧。但是,在完成的页面中,这会导致在“p”标记中的行首有空格的情况。我可以去掉 ,但它在编辑器中的外观与最终页面不同。

有谁知道在标签 的行首折叠 a 的方法?P或者有没有办法在 TinyMCE 中设置不同的格式,以便编辑器和最终页面看起来完全相同?谢谢!

4

2 回答 2

1

没有办法“折叠”它。您必须使用 REGEX 或字符串替换将其删除。

于 2012-05-24T21:16:31.493 回答
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);
于 2012-05-25T07:52:47.947 回答