2

TinyMCE を使用して、ユーザーが独自の Web ページを作成できるようにしています。私の目標は、人々がエディターに入力した内容を、エディターが発行するページとまったく同じように見せることです。 ユーザーが文の間に 2 つのスペースを入れた場合に Tinymce が a を追加することを除けば、ほぼ理解できました。明らかに、エディターでは、それが 行の先頭にある場合、すべての行がエディターの左側に完全に反するように折りたたまれます。ただし、完成したページでは、これにより「p」タグの行頭にスペースがある状況が作成されます。 . _

タグ の行頭でa を折りたたむ方法を知っている人はいますか? Pまたは、エディタと最終ページがまったく同じに見えるように、TinyMCE でこれを別の方法でフォーマットする方法はありますか? ありがとう!

4

2 に答える 2

1

ディオデウスがすでに述べたように、単一の文字を折りたたむことはできず、それを取り除きたい場合はそれを取り除く必要があります. 多くのブラウザは、連続して入力された複数のスペースを 1 つのスペースに「圧縮」します。これは、ユーザーが 15 個のスペースを入力した場合でも、表示されるスペースは 1 つだけであることを意味します。これが、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 に答える
1

それを「つぶす」ことはできません。REGEX または文字列置換を使用して削除する必要があります。

于 2012-05-24T21:16:31.493 に答える