Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли в IE 11 убрать выделение текста в textarea? (https://javascript.ru/forum/misc/85726-mozhno-li-v-ie-11-ubrat-vydelenie-teksta-v-textarea.html)

javascript_pupil 27.01.2024 10:48

Можно ли в IE 11 убрать выделение текста в textarea?
 
Javascript производит некие манипуляции с текстом в поле textarea. Но есть одна странная особенность: чаще всего весь текст в этом поле textarea после выполнения скрипта становится выделенным. Можно ли каким-то способом принудительно убрать выделение текста в textarea в IE 11? В других браузерах всё ок, но победить IE 11 не получается. Буду признателен за советы по теме.

P.S. Выкинуть IE 11 - не предлагать! :no:

voraa 27.01.2024 11:31

Попробуй
window.getSelection().removeAllRanges();

javascript_pupil 27.01.2024 18:32

Первым делом попробовал. Не работает. Один из специалистов сказал, что это невозможно, что IE 11 "не дрессируется".

Nexus 27.01.2024 19:47

javascript_pupil, не пробовали создать input и перенести на него фокус?

Как то так:
<textarea rows="7" cols="50">
Lorem ipsum dolor sit amet consectetur adipisicing elit. 
Beatae praesentium autem sint similique aliquid quos molestiae 
deserunt, perspiciatis quaerat necessitatibus maiores consequatur 
sed est eaque? Modi, quasi iusto. Ut, architecto?
</textarea>

<script>
  var textarea = document.querySelector("textarea");
  textarea.focus();
  textarea.select();

  setTimeout(() => {
    var input = document.createElement("input");
    input.style.cssText = `position: absolute; top: 0; left: 0; opacity: 0;`;
    document.body.appendChild(input);

    input.focus();
    input.parentNode.removeChild(input);
  }, 1000);
</script>

javascript_pupil 28.01.2024 09:16

И такой подход пробовал, но безуспешно.

Если я добавляю данный конкретный код, то функция перестает работать, а в консоли получаю следующую ошибку:
------------
"myScript" не определено
------------
Где "myScript" - это название моей функции, в результате работы которой текст в textarea становится выделенным. Как с этой ошибкой бороться я не знаю.

voraa 28.01.2024 09:33

Цитата:

Сообщение от javascript_pupil
Если я добавляю данный конкретный код, то функция перестает работать, а в консоли получаю следующую ошибку:
------------
"myScript" не определено

А куда вы добавляете? Кусок

setTimeout(() => {
    var input = document.createElement("input");
    input.style.cssText = `position: absolute; top: 0; left: 0; opacity: 0;`;
    document.body.appendChild(input);
 
    input.focus();
    input.parentNode.removeChild(input);
  }, 1000);

надо добавить или в саму функцию в конце, или сразу после ее вызова
1000 многовато, я бы 4 поставил.

Nexus 28.01.2024 12:13

Цитата:

Сообщение от voraa
1000 многовато, я бы 4 поставил

Задержку в секунду я поставил, чтобы в примере было видно, что выделение действительно снимается после переноса фокуса :)

ps. ну и не стоит в ie даже пытаться использовать стрелочные функции.

javascript_pupil 28.01.2024 13:43

Пробовал я по всякому. Толку ноль. Если даже эту страницу открыть в IE 11 и нажать на "Посмотреть", то ничего не происходит, хотя в других браузерах текст выделяется, а потом выделение снимается. Да за 1 секунду его заметно.

Заменял даже этим кодом свою функцию. Он даже не выделяет текст в IE 11. В других браузерах выделяет и гаснет, а IE 11 не реагирует никак.

ruslan_mart 28.01.2024 13:59

Попробуйте удалить textarea и вернуть обратно

var parentNode = textarea.parentNode;
var currentIndex = [].indexOf.call(textarea.children, textarea);

parentNode.removeChild(textarea);

setTimeout(function() {
   parentNode.insertBefore(textarea, parentNode.children[currentIndex]);
}, 0);


Но скорее всего у вас проблема вообще в другом, не может быть такого, что выделение не снималось совсем

voraa 28.01.2024 14:46

Цитата:

Сообщение от javascript_pupil
Если даже эту страницу открыть в IE 11 и нажать на "Посмотреть", то ничего не происходит,

И ошибок в консоле нет?


Часовой пояс GMT +3, время: 14:31.