2012-06-26 8 views
3

현재 커서 위치에 일부 콘텐츠를 삽입하려고하거나 TinyMCE 편집기 인스턴스에서 선택한 콘텐츠를 바꾸려고합니다. 나는 이것을 사용하고 있습니다 : content 내가 삽입 할 HTML의 캐릭터가TinyMCE - IE에서 커서 위치에 콘텐츠 삽입이 작동하지 않습니다.

tinyMCEPopup.editor.selection.setContent(content);

.

Firefox, Opera 및 Chrome에서 잘 작동하지만 IE에서는 작동하지 않습니다. 대신 선택 항목이 아닌 편집기의 시작 부분에 내용을 삽입합니다. 나는 또한 시도했다 :

tinyMCEPopup.execCommand('mceInsertContent', false, content);

를 다시 같은 행동을 IE에서. 특수 문자를 삽입하는 TinyMCE 코드는 위의 함수를 사용하며 작동합니다! 아직

IE에서 작동하지 않는, 오페라도 (도구 모음에서 내 플러그인의 버튼이 표시되지 않습니다 : 나는

function insertChar(chr) { 
    tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); 

    // Refocus in window 
    if (tinyMCEPopup.isWindow) 
     window.focus(); 

    tinyMCEPopup.editor.focus(); 
    tinyMCEPopup.close(); 
} 

UPDATE ... 내 플러그인과 여전히 기쁨을 복제 시도했습니다 그것은 아마 별개의 문제 일지라도)! "개체가있는 방법이 없습니다 :

$('#my-editor-id').tinymce().execCommand('mceInsertContent', false, content);

에 오류가있어 : 나는 이제도이 사용의 jQuery 플러그인을 시도로드 편집자를 얻었으나, 그 위에 mceInsertContent 메소드를 호출하지 못했습니다했습니다 : 나는 어쩌면 그걸 팝업에서 불러 낼 수 없을거야?! ,

tinyMCEPopup.restoreSelection(); 

문제는 당신이 다른 편집기 외부의 단추 또는 링크 같은 것을 클릭하면 TinyMCE에 현재 커서 위치를 잃고 있다는 것입니다

tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); 
+0

나 같은 상황. IE> = 8을 사용하면 작동하지 않습니다! 나는 이것을 발견했다 [link] (http://stackoverflow.com/questions/3918773/textarea-tinymce-and-insert-an-image-in-textarea). 그 사람이 그것을 해결했습니다 (아마 jQuery 플러그인을 사용하여). JS 코드를 사용하여 작동하지 않는다고 확인합니다. – Daviddd

+0

David에게 감사드립니다. 거의 그것을 포기하면서, 이것을 보는 나이를 보냈습니다. 내 질문을 jQuery 플러그인에 대한 나의 경험으로 업데이트했다. 나는 어느 쪽이든 IE 또는 TinyMCE가 쓰레기다고 확신한다. 그러나 어느 쪽이 아직 확신하는지 :) 나는 IE쪽으로 기울고있다! – greg84

+0

@ greg84 ** 팝업에서 호출 할 수 없을 수도 있습니다! ** Tinymce emotions plugin (emotions.js)은 동일한 tinyMCEPopup.execCommand ('mceInsertContent', false, file)를 사용합니다. 커서 위치에 아이콘을 삽입하고 IE를 포함한 모든 브라우저에서 잘 작동합니다 ... – yb007

답변

4

는 호출 시도 그것은 초점을 잃게 만듭니다.
문제를 해결하려면 단추 또는 링크의 mousedown 이벤트를 사용하십시오. 이렇게하면 포커스를 잃기 전에 삽입 작업을 수행 할 수 있습니다. 삽입하기 전에 편집기 및

editor.selection.moveToBookmark(); 

의 초점을 잃어버린 전에

editor.selection.getBookmark(); 

를 사용 - 유사한 시나리오에서 나를 위해 일한, 어떤 것을

$("#insert_link").mousedown(function (e) { 
    var editor = tinyMCE.get("editor"); 
    editor.execCommand('mceInsertContent', false, "Insert Value"); 
    e.preventDefault(); 
}); 
2

를 호출하기 전에 :

+0

위의 문제는 TinyMCE v4.2.6에서 jQuery 모드를 사용하지만 인라인 텍스트 편집기를 구성했을 때만 발생했습니다. inline = false로 설정하면 텍스트가 예상대로 캐럿 위치에 삽입됩니다. 그러나이 솔루션을 사용하면 인서트 모드를 사용하여 텍스트 삽입이 올바르게 작동합니다. –

2

여기 해결책이 될 수 내용.

문제는 FF로 텍스트가 포함 된 텍스트 필드의 일부 지점에 커서를 놓은 다음 다른 곳을 클릭하고 뒤로 (즉, Tab을 치면) 캐럿이 이전 위치에 표시됩니다 초점을 잃었다. IE에서는 처음으로 돌아갑니다. 이게 도움이 되길 바란다.

+0

miny_popup이 더 이상 존재하지 않는 Tiny의 최신 버전에서 잘 작동합니다. 감사! – SchonWieder

+0

이 수정 프로그램은 저에게 효과적이었습니다. 나는 북마크 "bkmrk = editor.selection.getBookmark()"의 복사본을 저장하기 위해 작업하는 커스텀 플러그인에 로컬 변수를 만들어야 만했다. 그런 다음 복원 메소드를 생성하여 "... return editor.selection "tinyMCE.activeEditor.plugins ["fmgattachment "]를 통해 코드에서 호출 된 .moveToBookmark (bkmrk)"restoreBookmark(); " –

관련 문제