[英]Javascript Rich Text Editor with get AND set cursor position support
[英]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.