如何在rich:编辑器richfaces中获得光标位置



我有一个rich: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没有定义。

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

Thanks in advance

如果你只想在当前位置插入内容,你可以使用:

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

如果您想对光标位置做一些事情,这将是棘手的,因为编辑器中的位置不对应于内容中的位置(内容中有HTML标记)。您可以通过以下方式获取位置:

component.tinyMCE_editor.selection.getBookmark().start

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

在光标位置后面写点东西:

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 || "";
                }

相关内容

  • 没有找到相关文章

最新更新