Можно ли в IE 11 убрать выделение текста в textarea?
Javascript производит некие манипуляции с текстом в поле textarea. Но есть одна странная особенность: чаще всего весь текст в этом поле textarea после выполнения скрипта становится выделенным. Можно ли каким-то способом принудительно убрать выделение текста в textarea в IE 11? В других браузерах всё ок, но победить IE 11 не получается. Буду признателен за советы по теме.
P.S. Выкинуть IE 11 - не предлагать! :no: |
Попробуй
window.getSelection().removeAllRanges(); |
Первым делом попробовал. Не работает. Один из специалистов сказал, что это невозможно, что IE 11 "не дрессируется".
|
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>
|
И такой подход пробовал, но безуспешно.
Если я добавляю данный конкретный код, то функция перестает работать, а в консоли получаю следующую ошибку: ------------ "myScript" не определено ------------ Где "myScript" - это название моей функции, в результате работы которой текст в textarea становится выделенным. Как с этой ошибкой бороться я не знаю. |
Цитата:
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 поставил. |
Цитата:
ps. ну и не стоит в ie даже пытаться использовать стрелочные функции. |
Пробовал я по всякому. Толку ноль. Если даже эту страницу открыть в IE 11 и нажать на "Посмотреть", то ничего не происходит, хотя в других браузерах текст выделяется, а потом выделение снимается. Да за 1 секунду его заметно.
Заменял даже этим кодом свою функцию. Он даже не выделяет текст в IE 11. В других браузерах выделяет и гаснет, а IE 11 не реагирует никак. |
Попробуйте удалить textarea и вернуть обратно
var parentNode = textarea.parentNode;
var currentIndex = [].indexOf.call(textarea.children, textarea);
parentNode.removeChild(textarea);
setTimeout(function() {
parentNode.insertBefore(textarea, parentNode.children[currentIndex]);
}, 0);
Но скорее всего у вас проблема вообще в другом, не может быть такого, что выделение не снималось совсем |
Цитата:
|
| Часовой пояс GMT +3, время: 00:32. |