And ... what, in two months? Finally, I found the answer to this question. It depends on document.caretRangeFromPoint (Webkit) or document.caretPositionFromPoint .
var getAllTextInColumn = function(rect){ if(document.caretRangeFromPoint){ var caretRangeStart = document.caretRangeFromPoint(rect.left, rect.top); var caretRangeEnd = document.caretRangeFromPoint(rect.left+rect.width-1, rect.top+rect.height-1); } else { return null; } if(caretRangeStart == null || caretRangeEnd == null) return null; var range = document.createRange(); range.setStart(caretRangeStart.startContainer, caretRangeStart.startOffset); range.setEnd(caretRangeEnd.endContainer, caretRangeEnd.endOffset); return range.toString(); };
source share