我有一个富有的编辑
<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
。
如何获取当前光标的位置???
提前致谢
答案 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 || "";
}