如何在rich中获取光标位置:javascript创建编辑器richfaces

时间:2014-05-10 04:26:54

标签: javascript jsf richfaces rich-text-editor

我有一个富有的编辑

<rich:editor id="editor" width="1000" height="300"
             value="#{emailTemplateHome.instance.emailTemplateContent}"          
             theme="advanced">
</rich:editor>

和javascript函数

function change(){
            var val = document.getElementById("#{rich:clientId('editor')}");
            if(val != null){    
                var component = val.component;
                var content = component.tinyMCE_editor.getContent();                
                var position = content.slice(0, val.positionedOffset).length;
                var result = content.substr(0,position) + "{chuc_vu}" + content.substr(position);
                component.tinyMCE_editor.setContent(result);    
            }
        }

但未定义var position

如何获取当前光标的位置???

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您只想在当前位置插入东西,可以使用:

component.tinyMCE_editor.execCommand('mceInsertContent', false, "insert text");

如果你想对光标位置做一些棘手的事情,因为编辑器中的位置与内容中的位置不对应(内容中包含HTML标签)。你可以这样得到这个位置:

component.tinyMCE_editor.selection.getBookmark().start

val.positionedOffset是一个返回数组的函数,我不确定你使用的是什么(更不用说slice(0,x).length = x)

答案 1 :(得分:0)

在光标位置后写一些东西:

function writeAfterCursor(element) {
                    var bm =tinyMCE.activeEditor.selection.getBookmark().start;
                    var content= tinyMCE.activeEditor
                    .getContent();
                    content= strip(content);
                    var res = content.split("");

                    var res1= []; 
                    var res2= []; 
                    for(i=0; i < bm; i++){
                        res1[i]=res[i];
                    }
                    var j=0;
                    for(i=bm; i < res.length; i++){
                        res2[j]=res[i];
                        j++;
                    }
                    var content1= res1.join("");
                    var content2= res2.join("");
                    content = content1+ element.value+content2;
                    tinyMCE.activeEditor.setContent(content);
                    tinyMCE.activeEditor.selection.moveToBookmark(bm);

                }
                function strip(html)
                {
                   var tmp = document.createElement("DIV");
                   tmp.innerHTML = html;
                   return tmp.textContent || tmp.innerText || "";
                }