Skip to content

Getting caret line number. #278

Open
@UhMarco

Description

We're able to get the index of the caret by doing something like this:

function getCaretPosition(element: HTMLElement) {
  var sel = window.getSelection()!;
  if (!sel.rangeCount) return -1;

  var range = sel.getRangeAt(0);
  var preCaretRange = range.cloneRange();
  preCaretRange.selectNodeContents(element);
  preCaretRange.setEnd(range.endContainer, range.endOffset);
  var caretPosition = preCaretRange.toString().length;
  return caretPosition;
}

Is it possible to get the line number? I've tried splitting the innerHTML of the div by "<br>" and finding the length of the first string. If the string has length, I can see if the caret position is greater than or equal to the length and if this is true, the caret is either at the end of the first line or below. However, if the first line is empty and the innerHTML consist of only new lines, I haven't been able to find a way of working out the caret line number.

Does anyone know of a solution to find out the caret line number no matter the content of the div?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions