TinyMce ed.selection.select在Internet Explorer中引发错误

时间:2012-07-19 08:08:19

标签: internet-explorer tinymce

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

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

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

在这里找到: What's the best way to set cursor/caret position?

这在de Chrome中工作正常但在IE中引发错误

“DOM例外:INDEX_SIZE_ERR(1)”

1 个答案:

答案 0 :(得分: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);