2014-05-10 1 views
1

에 의해 에디터 richfaces을 : 편집기풍부한에서 커서 위치하는 방법을 : 나는 부자가 자바 스크립트

<rich:editor id="editor" width="1000" height="300" 
      value="#{emailTemplateHome.instance.emailTemplateContent}"   
      theme="advanced"> 
</rich:editor> 

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이 정의되지 않은 자바 스크립트 함수.

어떻게 현재 커서의 위치를 ​​얻을 수 있습니까 ??? 사전

답변

1

에서

덕분에 당신은 단지 당신이 사용할 수있는 현재의 위치에서 일을 삽입 할 경우

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

당신이 까다로운 일이 될 것 커서 위치에 뭔가를하려는 경우, 편집기의 위치가 내용의 위치와 일치하지 않기 때문입니다 (내용에 HTML 태그가 있음). 당신은 위치에이 방법을 얻을 수 있습니다 : 나는 당신이 그것을 사용하고 있었는지 확실하지 않다,

component.tinyMCE_editor.selection.getBookmark().start 

val.positionedOffset 배열을 반환하는 함수입니다 (말할 것도없고 그 slice(0,x).length =의 x)는 뭔가를 쓰기

+0

정말 고마워. 그냥 현재 위치에 텍스트를 삽입하고 싶습니다. 하지만 "# {chuc_vu}"텍스트를 빈 텍스트로 삽입하고 싶습니다. 텍스트 "{chuc_vu}"로 작동합니다. 캐릭터 "#"의 문제점은 무엇입니까 ??? – TungHarry

+0

빈 값을 삽입 하시겠습니까? 그것은 작동하지 않습니다. – Makhiel

+0

아니요. 단지 텍스트 일뿐입니다. 그것은 콩 값처럼 보입니다. 그 텍스트를 인식 할 수 없습니까? – TungHarry

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