IE11: document.getSelection не работает должным образом внутри тегов ввода (т. Е. Текста) в IE11 - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь получить выделение во входном HTML-теге с помощью document.getSelection (), но он не работает в Internet Explorer 11. Функция поддерживается, но возвращаемое значение кажется неправильным.

Я протестировал его в Chrome и Edge, и он работает хорошо, поэтому кажется, что проблема связана с IE11.

В Chrome и Edge он возвращает объект выбора со значениями в anchorNode и rangeCount (отличными от 0), ипоказывает выделенный текст при вызове функции toString ().Когда ничего не выбрано или вход пуст, но он сфокусирован, он все еще имеет значения для anchorNode и rangeCount, но функция toString возвращает пустую строку.

Chrome:

https://media.giphy.com/media/mFpXA8uv0GwUEx6Ofu/giphy.gif https://i.postimg.cc/ncnM5QtP/chrome-abc-selection.png

IE11:

https://media.giphy.com/media/mFpXA8uv0GwUEx6Ofu/giphy.gif https://i.postimg.cc/QxSVrx8x/IE11-abc-selection.png

Мне в основном нужно значение свойства rangeCount, которое getSelection () возвращает, потому что тогдаМне нужно вызвать функцию getRange, но я с ней справляюсь, у меня проблемы с IE11, и мне нужно сделать сайт совместимым со всеми этими браузерами.

Это ошибка IE11, которую можно исправитьМайкрософт или есть обходной путь, который я могу реализовать?

1 Ответ

0 голосов
/ 21 июня 2019

Вы можете использовать HTML-элемент DOM для получения индексов выбора через element.selectionStart и element.selectionEnd, затем вы просто получаете значение элемента и делаете подстроку для значения, используя индексы .... см. Пример ниже.

<!DOCTYPE html>
<html>
<body>

<button type="button" onclick="myFunction()">Show me My Selection</button> 
<input id="myInput" type="text" value="This is my selection"><br>
<script>
	myFunction = function(){
    let element = document.getElementById("myInput");
    alert('The selected text = ' + element.value.substring(element.selectionStart,element.selectionEnd));  
}
</script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...