http://jsfiddle.net/VzbYJ/86/contenteditable 삽입 된 범위 바깥쪽에 캐럿 놓기
이 링크를 한번 보시기 바랍니다. 그것이 지워지면 캐럿 장소에 스팬 노드를 삽입 할 것입니다. 문제는 노드를 삽입 한 후 노드를 누르면 해당 색상도 녹색입니다. 도 span 요소 내부로 들어 오기 때문에 그러면 span 뒤에 캐럿을 넣으면 다음 삽입 된 노드의 색이 정상으로 유지됩니다.
캐럿 위치에 따라 선택한 노드를 찾으려고 시도하고 요소 다음에 범위를 설정하고 접음 (false)을 사용했습니다. 그러나 나는 원하는 출력을 얻을 수 없었다.
노드를 찾기위한 코드 :
function findNode(event)
{
if (event.type == 'click')
par = event.target;
else if (event.type == 'keyup'){
if (document.selection)
par = document.selection.createRange().parentElement();
else if (window.getSelection){
var range = window.getSelection().getRangeAt(0);
par = range.commonAncestorContainer.parentNode;
}
}
을하고 다음 나는() 개미 붕괴 (false)를 setEndAfter를 사용하여 경계를 설정합니다. 나는이 분야에서 새롭기 때문에 나는 무엇이 옳다는 것을 확신하지 못한다. 그래서 어떤 제안이라도 대단히 중요합니다. 미리 감사드립니다.
나는이 방법을 사용하지만, 유니 코드 문자를 제거 할 수 없습니다! 그러나 나는 그것을 알아 냈다. ""을 대체하기 위해 getContent 및 setContent를 통해 귀하의 콘텐츠에 대한 일부 정규 표현식을 사용하십시오. 그러나 여기에 속임수가 있습니다. getContent ({format : 'numeric'});와 같이 getContent를 사용하지 않으면 표시되지 않습니다. –
너비가 0 인 문자가 자신의 요소에 있거나 해당 요소가 텍스트 노드로 다른 요소 다음에 있어야합니다. –
@QuentinEngles : 나는 그것이 중요하다고 생각하지 않는다. 깨끗한 목적으로 제로 너비 공간을 자체 요소에 두는 것이 편리 할 수 있습니다. –