0

answer.I は既にプラグイン wysiwyg エディターを使用しています。

function blanks(){
    wrap("*");
}

function wrap(tag) {
    var sel, range;
    var selectedText;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount) {
            range = sel.getRangeAt(0);
            selectedText = range.toString();
            range.deleteContents();
            range.insertNode(document.createTextNode('|' + tag + selectedText + tag + '|'));
        }
    }
    else if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        selectedText = document.selection.createRange().text + "";
        range.text = '|' + tag + selectedText + tag + '|';
    }

そのstackoverflowコメントボックスのテキストが太字で選択されているように参照し、太字を削除します。

4

1 に答える 1

0

特定の方法論でこれに答える準備はできていませんが、概念的に言えば、これは簡単な作業です。

contenteditable コンテナーのコンテンツは、文字列に減らすことができます。文字列は文字のリストです。各文字には、このリスト内の位置またはインデックスがあります。

インデックスは一般にゼロベースであるため、この場合はそれを想定します。

文字の範囲を特定の値でラップしたい場合は、次のCHARようになります。

var result = string.slice(0, index) + CHAR + string.slice(index, size) + CHAR + string.slice(index + size);

indexは最初の文字の位置、sizeは選択範囲内の文字数です。

于 2014-10-30T06:50:17.093 に答える