Можно ли в 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); Но скорее всего у вас проблема вообще в другом, не может быть такого, что выделение не снималось совсем |
Цитата:
|
Цитата:
Цитата:
... не определено. Там скрипт, который модифицирует текст в textarea. Причем примерно процентов в 20 случаев текст не выделяется, а в 80% случаев выделяется. Я не знаю как это работает, никаких закономерностей не выявлено. Реально, интерес уже больше спортивный т.к. как я уже писал выше, спец сказал, что в IE 11 это работать не будет. Может здесь специалисты более знают. В конце скрипта моего стоит return false; но я ставил вышеуказанные примеры и до, и после - результат один. |
Часовой пояс GMT +3, время: 14:44. |