1

我想在特定位置自动将内容添加到 TinyMce 编辑器。为此,我使用以下示例:

首先,您应该在要创建的内容的末尾添加一个跨度。然后插入后,执行此操作...

ed.selection.select(ed.dom.select('span#caret_pos_holder')[0]); //选择跨度 ed.dom.remove(ed.dom.select('span#caret_pos_holder')[0]); //删除跨度

在这里找到: 设置光标/插入符号位置的最佳方法是什么?

这在 de Chrome 中运行良好,但在 IE 中引发错误

“DOM 异常:INDEX_SIZE_ERR (1)”

4

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 回答