Как получить слово одним щелчком мыши из текстовой области, используя JavaScript - PullRequest
1 голос
/ 23 февраля 2020

Можно ли получить кликну слово из текстовой области, используя jquery или javascript в IE и Firefox. В настоящее время я использую приведенный ниже код, и он отлично работает в Chrome, но он совсем не работает в IE и Firefox.

<body>
<label for="result" style="display: none">Text</label>
<textarea id="result" rows="30" cols="100"></textarea>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>

    $("#result").click(function() {
        if($(this).val() !== null && $(this).val() !== ''){
            var selection = window.getSelection();
            selection.modify('extend', 'backward', 'word');
            var end = selection.toString();

            selection.modify('extend', 'forward', 'word');
            var start = selection.toString();
            selection.modify('move', 'forward', 'character');
            var wordInput = end+start;

            console.log(wordInput);
        }
    });
</script>
</body>

Ожидаемая работа

Предположим, текстовая область с текстом: «Hello World»

Когда я щелкаю где-нибудь в «Hello», он должен напечатать «Hello», а не все значение текстовой области. Аналогично для «Мира» и т. Д.

Ошибка в IE

SCRIPT438: объект не поддерживает свойство или метод 'modify'

Может кто-нибудь помочь мне, пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2020

Этот код может помочь вам, я думаю.

const getTheWord = (selectionStart, value) => {
  let arr = value.split(" ");
  let sum = 0
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i].length + 1
    if (sum > selectionStart) return arr[i]

  }
}

const myArea = document.getElementById("myArea")
myArea.value = "Hello world!"
myArea.onclick = (e) => {
let i = e.currentTarget.selectionStart
console.log(getTheWord(i, myArea.value))
}
<textarea id="myArea"></textarea>
...