From 6e05c5cd7d9e793c0c943fe99c9bccac4ed09a22 Mon Sep 17 00:00:00 2001 From: David <59258980+zerodytrash@users.noreply.github.com> Date: Sun, 13 Mar 2022 23:36:53 +0100 Subject: [PATCH] Fix and refactor `getCaretPosition` (#1782) --- webroot/js/utils/chat.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/webroot/js/utils/chat.js b/webroot/js/utils/chat.js index 51e44348f..d793803cb 100644 --- a/webroot/js/utils/chat.js +++ b/webroot/js/utils/chat.js @@ -6,16 +6,21 @@ import { // Taken from https://stackoverflow.com/a/46902361 export function getCaretPosition(node) { - var range = window.getSelection().getRangeAt(0), - preCaretRange = range.cloneRange(), - caretPosition, - tmp = document.createElement('div'); + const selection = window.getSelection(); + + if (selection.rangeCount === 0) { + return 0; + } + + const range = selection.getRangeAt(0); + const preCaretRange = range.cloneRange(); + const tempElement = document.createElement('div'); preCaretRange.selectNodeContents(node); preCaretRange.setEnd(range.endContainer, range.endOffset); - tmp.appendChild(preCaretRange.cloneContents()); - caretPosition = tmp.innerHTML.length; - return caretPosition; + tempElement.appendChild(preCaretRange.cloneContents()); + + return tempElement.innerHTML.length; } // Might not need this anymore