我有一个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 || "";
}