Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.01.2024, 10:48
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

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

P.S. Выкинуть IE 11 - не предлагать!
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2024, 11:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Попробуй
window.getSelection().removeAllRanges();
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2024, 18:32
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Первым делом попробовал. Не работает. Один из специалистов сказал, что это невозможно, что IE 11 "не дрессируется".
Ответить с цитированием
  #4 (permalink)  
Старый 27.01.2024, 19:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

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>

Последний раз редактировалось Nexus, 27.01.2024 в 19:54. Причина: Вряд ли ie поддерживает focusOptions.preventScroll :\
Ответить с цитированием
  #5 (permalink)  
Старый 28.01.2024, 09:16
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

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

Если я добавляю данный конкретный код, то функция перестает работать, а в консоли получаю следующую ошибку:
------------
"myScript" не определено
------------
Где "myScript" - это название моей функции, в результате работы которой текст в textarea становится выделенным. Как с этой ошибкой бороться я не знаю.
Ответить с цитированием
  #6 (permalink)  
Старый 28.01.2024, 09:33
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от 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 поставил.
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2024, 12:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

Сообщение от voraa
1000 многовато, я бы 4 поставил
Задержку в секунду я поставил, чтобы в примере было видно, что выделение действительно снимается после переноса фокуса

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

Последний раз редактировалось Nexus, 28.01.2024 в 12:16.
Ответить с цитированием
  #8 (permalink)  
Старый 28.01.2024, 13:43
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

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

Заменял даже этим кодом свою функцию. Он даже не выделяет текст в IE 11. В других браузерах выделяет и гаснет, а IE 11 не реагирует никак.
Ответить с цитированием
  #9 (permalink)  
Старый 28.01.2024, 13:59
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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

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

parentNode.removeChild(textarea);

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


Но скорее всего у вас проблема вообще в другом, не может быть такого, что выделение не снималось совсем
Ответить с цитированием
  #10 (permalink)  
Старый 28.01.2024, 14:46
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как регуляркой убрать кавычки вокруг букв в середине текста? mik888em Общие вопросы Javascript 3 20.10.2022 22:39
Подскажите, как реализовать добавление текста в положение курсора textarea ArmagedDance Events/DOM/Window 2 13.05.2011 22:32
Double click убрать выделение Nihisil jQuery 2 21.02.2011 10:19
Отображение форматирования текста в textarea vahrusha Элементы интерфейса 2 18.09.2010 20:06
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55