1

TinyMceエディターの特定の場所にコンテンツを自動的に追加したい。このために私は次の例を使用します:

まず、作成するコンテンツの最後にスパンを追加する必要があります。次に、挿入したら、これを行います...

ed.selection.select(ed.dom.select('span#caret_pos_holder')[0]); //スパンを選択しますed.dom.remove(ed.dom.select('span#caret_pos_holder')[0]); //スパンを削除します

ここにあります: カーソル/キャレット位置を設定するための最良の方法は何ですか?

これはdeChromeでは正常に機能しますが、IEではエラーが発生します

「DOM例外:INDEX_SIZE_ERR(1)」

4

1 に答える 1

1

これが私が使っている関数(私自身のカスタムプラグインの1つにあります)です

    // sets the caret position
    // ed is the editor instance
    // element is the html element located in the editor
    // start defines if the caret should get set to the start of the element (otherwise the end)
    setCursor: function (ed, element, start) {

        var doc = ed.getDoc();
        var edwin = ed.getWin();
        if (typeof doc.createRange != "undefined") {
            var range = ed.selection.dom.createRng();
            range.selectNodeContents(element);
            range.collapse(start);
            var win = doc.defaultView || doc.parentWindow;
            var sel = tinymce.isIE ? doc.selection : edwin.getSelection();
            sel.removeAllRanges();
            sel.addRange(range);
        } else if (typeof doc.body.createTextRange != "undefined") {
            var textRange = doc.body.createTextRange();
            textRange.moveToElementText(element);
            textRange.collapse(start);
            textRange.select();
        }
    },

呼び出し例:

setCursor(ed, $(ed.getBody()).find('span#caret_pos_holder').get(0), 0);
于 2012-07-19T08:17:29.953 に答える