繁体   English   中英

如何获得丰富的光标位置:通过JavaScript编辑器richfaces

[英]How to get cursor position in rich:editor richfaces by javascript

我有一个丰富的:编辑

<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

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

提前致谢

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM