2014-11-04 6 views

답변

0

내가 생각했던 것보다 더 쉬웠다. 이 간과하기 쉬운 질문을 바탕으로 : Div "contenteditable" : get and delete word preceding caret 여기의 jsfiddle을 포크와 것은 나의 예상대로 작동 :

http://jsfiddle.net/52m2thu2/1/

function getWordBetweenAtAndCaret(containerEl) { 
    var preceding = "", 
     sel, 
     range, 
     precedingRange; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount > 0) { 
      range = sel.getRangeAt(0).cloneRange(); 
      range.collapse(true); 
      range.setStart(containerEl, 0); 
      preceding = range.toString(); 
     } 
    } else if ((sel = document.selection) && sel.type != "Control") { 
     range = sel.createRange(); 
     precedingRange = range.duplicate(); 
     precedingRange.moveToElementText(containerEl); 
     precedingRange.setEndPoint("EndToStart", range); 
     preceding = precedingRange.text; 
    } 
    var lastWord = preceding.match(/@(.+)$/i); 
    if (lastWord) { 
     return lastWord; 
    } else { 
     return false; 
    } 
}