Стрелочка в ворде которая сворачивает текст как убрать
Перейти к содержимому

Стрелочка в ворде которая сворачивает текст как убрать

  • автор:

Как отключить или включить залипание клавиш в Windows 10

Читайте, что такое залипание клавиш в Windows. Покажем по три простых способа как его включить и отключить. Функция залипания клавиш относится к специальным возможностям операционной системы Windows и имеет неоднозначные отзывы. С одной стороны, она достаточно полезна для пользователей, чья работа тесно связана с созданием и редактированием текстов. С другой стороны, она вызывает отрицательные эмоции у любителей компьютерных игр. Поэтому, в зависимости от того, какие задачи вы решаете на компьютере в настоящий момент, вы можете включить или отключить функцию «Залипания клавиш» на своем устройстве.

Как отключить или включить залипание клавиш в Windows 10

  • Что такое «Залипание клавиш»?
  • Как включить залипание клавиш в Windows 10
    • Используйте клавишу «Shift»
    • Сделайте это в параметрах клавиатуры «Использовать залипание клавиш»
    • Достигнуть цели, используя «Панель управления»
    • Используйте сочетания клавиш
    • Достичь цели в параметрах клавиатуры «Использовать залипание клавиш»
    • Отключить «Залипание клавиш» используя «Панель управления»

    Что такое «Залипание клавиш»?

    Программное залипание клавиш представляет собой автоматическую функцию, которая активируется при нажатии и продолжительном удерживании клавиши («Shift», «CTRL» или «ALT») или при частом нажатии клавиши «Shift» (пять раз и более). После этого «Windows 10» выдает звуковой сигнал и открывает окно «Залипание клавиш», предлагая вам включить режим залипания или отказаться.

    Перейти к просмотру

    Как отключить Залипание клавиш на клавиатуре компьютера или ноутбука с Windows 10, 8 или 7 ⌨️��⚙️

    Функция «Залипания клавиш» под управлением операционной системы «Windows 10» позволяет вам использовать клавиши «Shift», «CTRL», «ALT» и «Windows», нажимая каждую из них по отдельности. Чтобы включить или выключить функцию, вы можете воспользоваться следующими способами.

    Как включить залипание клавиш в Windows 10

    Используйте клавишу «Shift»

    • Шаг 1: Для включения функции «Залипания клавиш» в «Windows 10» непрерывно нажмите клавишу «Shift» пять раз подряд.
    • Шаг 2: На экране после звукового сигнала откроется диалоговое окно «Залипание клавиш». Выберите кнопку «Да» и нажмите для подтверждения.

    Вы хотите включить залипание клавиш?

    Перейти к просмотру

    Топ 10 сочетаний горячих клавиш Windows 10, 8 или 7, как настроить, изменить или задать новые ⌨️⚙️��

    Сделайте это в параметрах клавиатуры «Использовать залипание клавиш»

    • Шаг 1: В нижнем левом углу экрана в панели задач нажмите символ «Поиск» и введите в строке поисковый запрос «Залипание». В предложенных вариантах во всплывающем меню выберите лучшее соответствие: «Нажимайте клавиши по очереди для ввода сочетания клавиш».

    Нажимайте клавиши по очереди для ввода сочетания клавиш

    Использовать залипание клавиш

    Вы можете использовать другой вариант для доступа в меню «Параметры»: нажмите кнопку «Пуск» и выберите знак шестеренки в нижнем левом углу всплывающего меню;

    Пуск: Параметры

    или нажмите сочетание клавиш «Windows + X» или нажмите правой кнопкой мыши на кнопке «Пуск», во всплывающем меню выберите раздел «Параметры».

    ПКМ: Параметры

    В окне «Параметры» опустите бегунок вниз и выберите раздел «Специальные возможности». В левой панели бокового меню опустите бегунок вниз и выберите раздел «Клавиатура». В правой панели активируйте индикатор «Вкл.» в разделе «Использовать залипание клавиш».

    Перейти к просмотру

    Горячие клавиши браузеров Google Chrome, Яндекс, Mozilla Firefox, Opera, Microsoft Edge ⌨️��⚙️

    Достигнуть цели, используя «Панель управления»

    • Шаг 1: Откройте главное меню, нажав кнопку «Пуск» в левом углу экрана, опустите бегунок вниз до раздела «Служебные – Windows» и выберите в нем вкладку «Панель управления».

    Пуск: Панель управления

    Центр специальных возможностей

    Облегчение работы с клавиатурой

    Включить залипание клавиш

    Как отключить залипание клавиш в Windows 10

    Используйте сочетания клавиш

    Самый быстрый и легкий способ отключить функцию «Залипания клавиш» в «Windows 10» это выполнить на клавиатуре одновременное нажатие на две любые функциональные клавиши: «Shift», «CTRL», «ALT» и «Windows». Например, «Shift + CTRL», «Shift + ALT», «CTRL + ALT» и т.д. После нажатия сочетания клавиш вы услышите звуковой сигнал, оповещающий вас о том, что функция «Залипания клавиш» отключена.

    Достичь цели в параметрах клавиатуры «Использовать залипание клавиш»

    Способ отключения параметра «Залипание клавиш» полностью повторяет «Способ 2. Сделайте это в параметрах клавиатуры «Использовать залипание клавиш»», который мы применяли для включения этой функции. Выполните алгоритм действий, указанный в вышеназванном «Способе 2» и измените индикатор ячейки «Использовать залипание клавиш» в положение «Откл.» (режим отключения).

    Использовать залипание клавиш

    Отключить «Залипание клавиш» используя «Панель управления»

    • Шаг 1: Дважды щелкните значок «Залипание клавиш» на панели задач в правом нижнем углу экрана, чтобы отобразить окно «Облегчение работы с клавиатурой».

    Облегчение работы с клавиатурой

    Включить залипание клавиш

    Функция «Залипания клавиш» на вашем компьютере будет отключена.

    Применяя изложенные способы, вы всегда сможете быстро и легко включать и отключать эту функцию по мере необходимости, исходя из тех задач, которые вам необходимо решать в данный момент.

    Vladimir Mareev

    Автор: Vladimir Mareev, Технический писатель

    Владимир Мареев — автор и переводчик технических текстов в компании Hetman Software. Имеет тринадцатилетний опыт в области разработки программного обеспечения для восстановления данных, который помогает ему создавать понятные статьи для блога компании. Спектр публикаций довольно широк и не ограничивается только лишь темой программирования. Статьи включают также разнообразные обзоры новинок рынка компьютерных устройств, популярных операционных систем, руководства по использованию распространенных и специфических программ, примеры решений возникающих системных или аппаратных проблем и многие другие виды публикаций.

    Michael Miroshnichenko

    Редактор: Michael Miroshnichenko, Технический писатель

    Мирошниченко Михаил – одни из ведущих программистов в Hetman Software. Опираясь на пятнадцатилетний опыт разработки программного обеспечения он делится своими знаниями с читателями нашего блога. По мимо программирования Михаил является экспертом в области восстановления данных, файловых систем, устройств хранения данных, RAID массивов.

    • Обновлено:
    • 19.10.2023 9:32

    Поделиcь

    Вопросы и ответы

    Что такое «Залипание клавиш»?

    Залипание клавиш – это специальная возможность, которая позволяет людям включать клавишу-модификатор, например “Shift”, на постоянной основе. Это позволяет людям с ограниченными возможностями или работающим на компьютере завершать команды и ставить ярлыки быстро и легко, особенно, если сложно удерживать более одной клавиши одновременно.

    Как попасть в настройки «Залипание клавиш»?

    Чтобы открыть настройки залипания клавиш, нажмите «Пуск» — «Параметры» — «Специальные возможности» — «Клавиатура». Или надавите пять раз на Shift и кликните в появившемся окне включить или отключить залипание клавиш.

    Каждый раз после закрытия крышки ноутбука включается залипание клавиш. Почему?

    Попробуйте почистить клавиатуру или экран. У ноутбуков очень небольшой зазор между клавой и экраном, даже мельчайшая крошка может «нажать» на клавишу. Если все чисто, то возможно имеет место ошибка программного обеспечения.

    Когда компьютер включается, включается с ним и залипание клавиш. Как отключить это?

    Чтобы открыть настройки залипания клавиш, нажмите «Пуск» — «Параметры» — «Специальные возможности» — «Клавиатура». Или надавите пять раз на Shift и кликните в появившемся окне включить или отключить залипание клавиш.

    Как отключить окно «Залипание клавиш» при многократном нажатии Shift?

    • Нажмите пять раз подряд клавишу Shift. Появиться окошко «Залипание клавиш».
    • Перейдите по ссылке «Перейдите в центр специальных возможностей, чтобы отключить сочетание клавиш» в этом окошке.
    • Появится окно настроек залипания клавиш.
    • Снимите галочку напротив функции «Разрешить включение залипание клавиш с помощью сочетания клавиш».

    Комментарии (10)

    blade 7.11.2023 12:23 #

    залипание отключено. и не включается, но в игре оно почему то включается? есть способ как его отключить что бы даже в играх не включалось

    Hetman Software 7.11.2023 15:26 #

    Проблема «залипания клавиши» может возникать из-за различных причин, и ее решение зависит от вашей операционной системы, железа и настроек. Вот несколько шагов, которые вы можете предпринять, чтобы попытаться решить эту проблему: Перезагрузите компьютер: Иногда, простая перезагрузка может помочь временно решить проблему. Очистка клавиатуры: Попробуйте очистить клавиатуру от пыли и мусора, которые могут приводить к залипанию клавиш. Проверьте наличие вирусов: Малware и вредоносные программы могут вызывать подобные проблемы. Убедитесь, что ваш компьютер защищен антивирусным программным обеспечением и проведите проверку системы. Обновите драйвера клавиатуры: Проверьте, что у вас установлены актуальные драйверы для клавиатуры. Обновите их, если это необходимо. Проверьте физическое состояние клавиши: Возможно, клавиша физически повреждена. Попробуйте удалить клавишу и очистить ее, а затем верните обратно. Что касается ситуации, когда залипание происходит только в играх, то это может быть связано с определенными настройками в игре или программном обеспечении. Вам, возможно, придется настроить или отключить функции клавиатуры внутри игры. Конкретные шаги будут зависеть от игры, в которой возникает проблема. Обычно в настройках игры можно найти опции, связанные с клавиатурой, и настроить их по своему усмотрению. Если эти шаги не помогли решить проблему, то возможно, следует обратиться к специалисту по обслуживанию компьютеров для более подробного анализа и решения проблемы.

    Саша 2.04.2022 17:49 #

    Здравствуйте, каждый раз, при включении компьютера, когда я нажимаю букву «а» , она залипает до того момента, как я не нажму в поле ввода курсором, а после не работает до выключения ПК, приходится её копировать для ввода текста. И так на протяжении полугода, при этом она работает, разбирали клавиатуру и заменяли именно эту клавишу.

    Надежда 13.03.2021 07:00 #

    здравствуйте, залипание у меня отключено, но, вот когда пишу слово одну букву надо нажать 2 раза. в интернете ничего не нашлось. заранее спасибо

    Виктор 20.02.2021 17:00 #

    Здраствуйте , залипание полностью выключено, но есть проблема при игре при нажатии комбинации shift + w+d пикает и персонаж не поворачивает ( не реагирует) , в не игри аналогичная ситуация , правда клавиатура у меня азерти но я кнопки поменял что б было кверти, может вы мне поможете , спасибо .

    Использование приложений в полноэкранном режиме на Mac

    Многие приложения на Mac поддерживают полноэкранный режим, в котором приложение заполняет весь экран. Вы можете использовать каждый сантиметр экрана и работать, не отвлекаясь на элементы рабочего стола.

    1. На Mac наведите указатель на зеленую кнопку в левом верхнем углу окна, затем выберите «Перейти в полноэкранный режим» в появившемся меню или нажмите кнопку . Меню, которое появляется при наведении указателя на зеленую кнопку в левом верхнем углу окна. Команды меню, сверху вниз: «Перейти в полноэкранный режим», «Поместить окно слева», «Поместить окно справа».
    2. В полноэкранном режиме выполните любое из указанных ниже действий.
      • Отображение или скрытие строки меню. Переместите указатель к верхнему краю экрана или от верхнего края экрана. Если выключено отображение и скрытие строки меню в полноэкранном режиме, строка меню всегда отображается.
      • Отображение или скрытие Dock. Переместите указатель к месту, где находится Dock, или от него.
      • Перемещение между другими приложениями в полноэкранном режиме. Смахните влево или вправо по трекпаду тремя или четырьмя пальцами в зависимости от настроек трекпада.
    3. Чтобы выйти из полноэкранного режима в приложении, снова наведите указатель на зеленую кнопку, затем выберите «Выйти из полноэкранного режима» в появившемся меню или нажмите кнопку .

    Чтобы увеличить окно, не переходя в полноэкранный режим, можно развернуть окно: оно развернется на весь экран, но строка меню и панель Dock останутся видимыми. Разворачивание и сворачивание окон приложений.

    Работая с приложением в полноэкранном режиме, можно быстро выбрать другое приложение для работы в режиме Split View. Нажмите Control-стрелка вверх (или смахните вверх тремя или четырьмя пальцами), чтобы войти в Mission Control, перетяните окно из Mission Control на миниатюру полноэкранного приложения в панели Spaces, затем нажмите миниатюру Split View. Можно также перетянуть миниатюру одного приложения на миниатюру другого приложения в панели Spaces.

    Горячие клавиши Windows: популярные и удобные комбинации

    Что это? Горячие клавиши Windows – это комбинации кнопок на клавиатуре, нажимая на которые, вы совершаете определенную операцию: вырезать/вставить, копировать, свернуть все окна и т. д. Они нужны не только для навигации на «Рабочем столе», но также помогают при работе в браузерах, документах.

    Какие бывают? Сочетаний клавиш в ОС Windows очень много. Условно их можно разделить на комбинации для навигации, работы с текстом, серфинга в Интернете, работы в командной строке, а также вспомогательные.

    1. Преимущества и недостатки горячих клавиш Windows
    2. Горячие клавиши Windows для новичков: базовый набор
    3. Комбинации с кнопкой Win
    4. Горячие клавиши Windows для работы с командной строкой
    5. Горячие клавиши Windows для работы в браузере
    6. Горячие клавиши Windows для работы с документами

    Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

    Преимущества и недостатки горячих клавиш Windows

    Комбинаций горячих клавиш в Windows имеется много, и они существенно упрощают работу с операционной системой. Благодаря их наличию, пользователь может быстро, без использования мышки, выполнять те или иные операции.

    Горячие клавиши Windows рассчитаны на работу с папками, файлами, текстовыми документами. Кроме того, с их помощью можно быстро получать доступ к функционалу популярных браузеров. Как результат – в целом более быстрый, точный и профессиональный подход к работе с компьютером.

    Режим горячих клавиш Windows полезен, когда нужно работать с выпадающим меню, находить там нужные пункты. Если делать это с помощью мыши, то времени уходит значительно больше. А так необходимую операцию можно быстро выполнить, нажав нужную комбинацию клавиш. Тогда рабочий процесс идет быстрее, и ничто не отвлекает от выполнения основной задачи.

    Если же говорить о недостатках горячих клавиш, то главный состоит в том, что таких комбинаций очень много. Их просто нереально запомнить. Впрочем, в этом и нет необходимости. Просто выучите те, которые часто нужны для работы именно вам. Для простоты запоминания можно повесить около компьютера список горячих клавиш Windows. Через несколько дней вы поймете, что напоминалка вам уже особо не нужна, и её можно убирать.

    Горячие клавиши Windows для новичков: базовый набор

    Самые простые действия – это выполнение перемещения, копирования и вставки файлов либо символов. Тут применяются клавиши Ctrl + Х, Ctrl + C и Ctrl + V, при этом правая кнопка мыши (с аналогичными пунктами) становится не нужна. Отмена последних операций выполняется нажатием Ctrl + Z. Новая папка создается через комбинацию Ctrl + Shift + N, а чтобы задать папке новое имя, используйте кнопку F2. Она, кстати, работает применительно к файлам любого типа.

    Узнай, какие ИТ — профессии
    входят в ТОП-30 с доходом
    от 210 000 ₽/мес
    Павел Симонов
    Исполнительный директор Geekbrains

    Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.

    Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

    Скачивайте и используйте уже сегодня:

    Павел Симонов - исполнительный директор Geekbrains

    Павел Симонов
    Исполнительный директор Geekbrains

    Топ-30 самых востребованных и высокооплачиваемых профессий 2023

    Поможет разобраться в актуальной ситуации на рынке труда

    Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

    Только проверенные нейросети с доступом из России и свободным использованием

    ТОП-100 площадок для поиска работы от GeekBrains

    Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

    Получить подборку бесплатно
    Уже скачали 26757

    Текущее положение дел в буфере обмена можно увидеть, нажав Win + V. Если буфер синхронизирован со смартфоном, то данная опция становится особенно ценной. Для быстрого открытия и закрытия проводника существуют комбинации Windows (далее будет использоваться сокращение Win) + E, и Ctrl + W (соответственно). Они применимы для любых окон. Исключение — Alt + F4. Если нужно быстро свернуть сразу все открытые на рабочем столе окна, используйте комбинацию горячих клавиш Win + D.

    Ctrl + Х вырезать файл или кусок текста (для последующего перемещения)
    Ctrl + C копирование файла (текста)
    Ctrl + V вставка скопированного либо вырезанного объекта (файла, текста)
    Ctrl + Z отмена последнего действия
    Ctrl + Shift + N создание новой папки
    F2 задать для папки другое имя
    Win + V открытие буфера обмена
    Win + E открытие проводника
    Ctrl + W, Alt + F4 закрытие текущего окна
    Shift удаление файлов без возможности восстановления
    Ctrl + P открытие окна печати
    Win + D сворачивание всех открытых окон

    Комбинации с кнопкой Win

    На многих клавиатурах есть кнопка, на которой изображен логотип Windows. Она называется Win. Существует целый ряд комбинаций, выполняемых именно с этой клавишей:

    • Win— открытие и закрытие меню «Пуск».
    • Win+A — обращение к Центру поддержки.
    • Win+B — фокусирование на области уведомлений.
    • Win+C — запуск ассистента Cortana (в режиме прослушивания). Данная опция по умолчанию находится в отключенном состоянии. Кроме того, есть регионы, в которых доступа к ассистенту нет.
    • Win+Shift+C — открытие меню чудо-кнопок.

    Выделение: Range, TextRange и Selection

    Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

    Более новая информация по этой теме находится на странице https://learn.javascript.ru/selection-range.

    В этой статье речь пойдёт о документированных, но нечасто используемых объектах Range , TextRange и Selection . Мы рассмотрим вольный перевод спецификаций с понятными примерами и различные кроссбраузерные реализации.

    Эта статья представляет собой обновлённый вариант статьи Александра Бурцева, которой уже нет онлайн. Публикуется с его разрешения, спасибо, Александр!

    Range

    Range – это объект, соответствующий фрагменту документа, который может включать узлы и участки текста из этого документа. Наиболее подробно объект Range описан в спецификации DOM Range.

    Чтобы понять о чем речь, обратимся к самому простому случаю Range , который будет подробно рассмотрен ниже – к выделениям. В приводимом ниже примере выделите несколько слов в предложении. Будет выводиться текстовое содержимое выделяемой области:

    Соберём микс из жирности, курсива и ссылки и повыделяем здесь.

    Но такие области можно создавать не только с помощью пользовательского выделения, но и из JavaScript-сценария, выполняя с ними определённые манипуляции. Однако, написать простой иллюстрирующий код сразу не выйдет, т.к. есть одно НО – Internet Explorer до версии 9. В Microsoft создали собственную реализацию – объект TextRange. Разберём каждую реализацию по отдельности.

    DOM-реализация Range (кроме IE8-)

    Range состоит из двух граничных точек (boundary-points), соответствующих началу и концу области. Позиция любой граничной точки определяется в документе с помощью двух свойств: узел (node) и смещение (offset).

    Контейнером (container) называют узел, содержащий граничную точку. Сам контейнер и все его предки называются родительскими контейнерами (ancestor containers) для граничной точки. Родительский контейнер, включающий обе граничные точки, называют корневым контейнером (root container).

    На изображении выше граничные точки выделения лежат в текстовых узлах ( #text1 и #text2 ), которые являются контейнерами. Для левой границы родительскими контейнерами являются #text1 , H1 , BODY , для правой – #text2 , P , BODY . Общий родитель для обоих граничных точек – BODY , этот элемент является корневым контейнером.

    Если контейнер является текстовым узлом, то смещение определяется в символах от начала DOM-узла. Если контейнер является элементом ( Document , DocumentFragment , Element …), то смещение определяется в дочерних узлах.

    Смотрим на иллюстрацию (источник):

    Граничные точки объекта Range s1 лежат в текстовых узлах, поэтому смещение задаётся в символах от начала узла. Для s2 граничные точки расставлены так, что включают весь абзац

    Blah xyz

    , поэтому контейнером является элемент BODY , и смещение считается в позициях дочерних узлов.

    Объекты Range создаются с помощью вызова document.createRange() . Объект при этом создаётся пустой, и граничные точки нужно задать далее его методами setStart и setEnd . Смотрим пример.

    Соз|даём объект Range

    От третье|го символа заголовка до десятого символа это абзаца.

    • Свойство commonAncestorContainer вернёт ссылку на наиболее вложенный корневой контейнер.
    • Свойство startContainer ( endContainer ) вернёт ссылку на контейнер верхней (нижней) граничной точки.
    • Свойство startOffset ( endOffset ) вернёт смещение для верхней (нижней) граничной точки.
    • Свойство collapsed вернёт true , если граничные точки имеют одинаковые контейнеры и смещение ( false в противном случае).
    • Метод setStart ( setEnd ) задаёт контейнер (ссылка на узел) и смещение (целочисленное значение) для соответствующих граничных точек. Пример выше.
    • Методы setStartBefore , setStartAfter , setEndBefore , setEndAfter принимают в качестве единственного аргумента ссылку на узел и устанавливают граничные точки в соотв. с естественной границей переданного узла. Например:

    var rng = document.createRange(); // Установит верхнюю граничную точку по левой границе спана #s1 rng.setStartBefore(document.getElementById('s1')); // Установит нижнюю граничную точку по правой границе спана #s2 rng.setEndAfter(document.getElementById('s2'));
  • Методы selectNode и selectNodeContents позволяют создать объект Range по границам узла, ссылку на который они принимают в качестве единственного аргумента. При использовании selectNode передаваемый узел также войдёт в Range , в то время как selectNodeContents создаст объект только из содержимого узла:
  • Метод collapse объединяет граничные точки объекта Range . В качестве единственного аргумента принимает булево значение ( true – для объединения в верхней точке, false – в нижней). По умолчанию true .
  • Метод toString вернёт текстовое содержимое объекта Range .
  • Метод cloneContents вернёт копию содержимого объекта Range в виде фрагмента документа.
  • Метод cloneRange вернёт копию самого объекта Range .
  • Метод deleteContents удаляет всё содержимое объекта Range .
  • Метод detach извлекает текущий объект из DOM, так что на него больше нельзя сослаться.
  • Метод insertNode принимает в качестве единственного аргумента ссылку на узел (или фрагмент документа) и вставляет его в содержимое объекта Range в начальной точке.
  • Метод extractContents вырезает содержимое объекта Range и возвращает ссылку на полученный фрагмент документа.
  • Метод surroundContents помещает всё содержимое текущего объекта Range в новый родительский элемент, ссылка на который принимается в качестве единственного аргумента.
  • Метод compareBoundaryPoints используется для сравнения граничных точек.

Для примера решим небольшую задачку. Найдём в текстовом узле фразу и подсветим её синим фоном.

 
     
Найдем в этом тексте слово "бабуля" и подсветим его синим фоном

С остальными свойствами и методами поэкспериментируйте сами. Перейдём к реализации range в IE.

TextRange (для IE)

Объект TextRange в реализации MSIE – это текстовый диапазон нулевой и более длины. У данного диапазона также есть свои границы, «перемещать» которые можно на целое число текстовых единиц: character(символ), word (слово), sentence (предложение). То есть можно взять и сдвинуть границу на 2(5, 8 и т.д.) слова (символа, предложения) вправо (влево). При этом у объекта сохраняются данные о HTML-содержимом диапазона и есть методы взаимодействия с DOM.

Объект TextRange создаётся с помощью метода createTextRange , который можно вызывать в контексте элементов BODY , BUTTON , INPUT (большинство типов), TEXTAREA .

Простой пример с кнопкой:

   

Рассмотрим свойства и методы объекта TextRange (не все, только самые необходимые):

  • Свойство boundingWidth (boundingHeight) вернёт ширину (высоту), которую занимает объект TextRange в пикселях.
  • Свойство boundingTop ( boundingLeft ) вернёт Y(X)-координату верхнего левого угла тестовой области относительно окна документа.
  • Свойство htmlText вернёт HTML-содержимое объекта.
  • Свойство text вернёт текстовое содержимое объекта (см. пример выше).
  • Свойство offsetTop ( offsetLeft ) вернёт Y(X)-координату верхнего левого угла тестовой области относительно предка.
  • Метод collapse объединяет граничные точки диапазона. В качестве единственного аргумента принимает булево значение ( true – для объединения в верхней точке, false – в нижней). По-умолчанию true.
  • Метод duplicate клонирует имеющийся текстовый диапазон, возвращая новый, точно такой же.
  • Метод expand расширяет текущий текстовый диапазон до единицы текста, переданной в качестве единственного текстового аргумента:
    • «character’ – символ.
    • «word» – слово
    • «sentence» – предложение
    • «textedit» – сворачивает до первоначального диапазона.

    Вернёт true ( false ) в случае успеха (неудачи).

    Также к TextRange применимы команды метода execCommand, который умеет делать текст жирным, курсивным, копировать его в буфер обмена (только IE) и т.п.

    Для закрепления сделаем задачку по поиску текстового содержимого, аналогичную той, что была выше:

     
         
    Найдем в этом тексте слово "бабуля" и подсветим его синим фоном

    С остальными свойствами и методами поэкспериментируйте сами.

    Selection

    Всем знакомо выделение элементов на странице, когда, зажав левую кнопку мыши и передвигая курсор, мы выделяем нужный фрагмент. Или зажимаем Shift и жмём на стрелочки клавиатуры. Или ещё как-то, неважно. В данной части статьи мы кроссбраузерно научимся решать две задачи: получать пользовательское выделение и устанавливать собственное.

    Получаем пользовательское выделение

    Эту задачу мы уже решали в самом начале статьи в примере с миксом. Теперь рассмотрим код:

    function getSelectionText() < var txt = ''; if (txt = window.getSelection) < // Не IE, используем метод getSelection txt = window.getSelection().toString(); >else < // IE, используем объект selection txt = document.selection.createRange().text; >return txt; >

    Все браузеры, кроме IE8- поддерживают метод window.getSelection() , который возвращает объект, схожий с рассмотренным ранее Range . У этого объекта есть точка начала выделения (anchor) и фокусная точка окончания (focus). Точки могут совпадать. Рассмотрим свойства и методы объекта Selection :

    • Свойство anchorNode вернёт контейнер, в котором начинается выделение. Замечу, что началом выделения считается та граница, от которой вы начали выделение. То есть, если вы выделяете справа налево, то началом будет именно правая граница. Это правило работает везде, кроме браузера Opera, в котором anchorNode вернёт ссылку на узел левого края выделения.
    • Свойство anchorOffset вернёт смещение для начала выделения в пределах контейнера anchorNode .
    • Свойства focusNode и focusOffset работают аналогично для фокусных точек, то есть точек окончания выделения. Opera и здесь отличилась, возвращает вместо фокусной точки узел правого края выделения.
    • Свойство rangeCount возвращает число объектов Range , которые входят в полученное выделение. Это свойство полезно при использовании метода addRange .
    • Метод getRangeAt принимает в качестве аргумента индекс объекта Range и возвращает сам объект. Если rangeCount == 1 , то работать будет только getRangeAt(0) . Таким образом, мы можем получить объект Range , полностью соответствующий текущему выделению.
    • Метод collapse сворачивает выделение в точку (каретку). Методу можно передать в качестве первого аргумента узел, в который нужно поместить каретку.
    • Метод extend принимает в качестве аргументов ссылку на контейнер и смещение ( parentNode , offset ), и перемещает фокусную точку в это положение.
    • Метод collapseToStart ( collapseToEnd ) перемещает фокусную (начальную) границу к начальной (фокусной), тем самым сворачивая выделение в каретку.
    • Метод selectAllChildren принимает в качестве единственного аргумента ссылку на узел и добавляет всех его потомков в выделение.
    • Метод addRange принимает в качестве аргумента объект Range и добавляет его в выделение. Таким образом можно увеличить количество объектов Range , число которых нам подскажет свойство rangeCount .
    • Метод removeRange ( removeAllRanges ) удаляет переданный (все) объект Range из выделения.
    • Метод toString вернёт текстовое содержимое выделения.

    IE предоставляет собственный интерфейс взаимодействия с выделениями – объект selection в контексте document. Для работы с этим объектом используются следующие методы:

    • Метод clear убирает выделение вместе с содержимым.
    • Метод createRange (ВАЖНО! Не путать со стандартным методом document.createRange() для создания объектов Range !) создаёт из содержимого выделения TextRange .
    • Метод empty убирает выделение, но оставляет содержимое.

    Надеюсь, теперь, после знакомства с обеими реализациями выделений, код выше стал более понятен.

    Установка собственного выделения

    Допустим, вам хочется, чтобы какой-то текстовый фрагмент на странице был выделен, как пользовательское выделение. Это нужно при клиентской реализации поиска по странице и некоторых других задач.

    Проще всего решить эту задачу следующим образом:

    1. Создать объект Range ( TextRange для IE8-).
    2. Перевести полученный объект в выделение.
    бабулю, на этот раз без поиска.
         
    Снова будем выделять бабулю, на этот раз без поиска.

    Снятие выделения

    Код для снятия выделения, использующий соответствующие методы объектов Selection :

    function clearSelection() < try < // современный объект Selection window.getSelection().removeAllRanges(); >catch (e) < // для IE8- document.selection.empty(); >>

    Итого

    • В современных браузерах поддерживается стандартный объект Range
    • В IE8- поддерживается только собственный объект TextRange.

    Есть библиотеки, которые «исправляют» объект TextRange , добавляя ему нужные свойства из Range .

    Код, получающий выделение, при использовании такой библиотеки может выглядеть так:

    var range = getRangeObject(); if (range) < alert( range ); alert( range.startContainer.nodeValue ); alert( range.startOffset ); alert( range.endOffset ); >else < alert( 'Ничего не выделено' ); >>

    fixIERangeObject.js

    /* This code is to fix Microsoft TextRange object (IE8 and below), to give equivalent of HTML5 Range object's startContainer,startOffset,endContainer and endOffset properties. Originally from: https://gist.github.com/1115251 (Munnawwar) */ /** * @param [win] Optional prameter. You could send an IFrame.contentWindow too. */ function fixIERangeObject(range, win) < //Only for IE8 and below. win = win || window; if (!range) return null; if (!range.startContainer && win.document.selection) < //IE8 and below var _findTextNode = function(parentElement, text) < //Iterate through all the child text nodes and check for matches //As we go through each text node keep removing the text value (substring) from the beginning of the text variable. var container = null, offset = -1; for (var node = parentElement.firstChild; node; node = node.nextSibling) < if (node.nodeType == 3) < //Text node var find = node.nodeValue; var pos = text.indexOf(find); if (pos == 0 && text != find) < //text==find is a special case text = text.substring(find.length); >else < container = node; offset = text.length - 1; //Offset to the last character of text. text[text.length-1] will give the last character. break; >> > //Debug Message //alert(container.nodeValue); return < node: container, offset: offset >; //nodeInfo > var rangeCopy1 = range.duplicate(), rangeCopy2 = range.duplicate(); //Create a copy var rangeObj1 = range.duplicate(), rangeObj2 = range.duplicate(); //More copies :P rangeCopy1.collapse(true); //Go to beginning of the selection rangeCopy1.moveEnd('character', 1); //Select only the first character rangeCopy2.collapse(false); //Go to the end of the selection rangeCopy2.moveStart('character', -1); //Select only the last character //Debug Message // alert(rangeCopy1.text); //Should be the first character of the selection var parentElement1 = rangeCopy1.parentElement(), parentElement2 = rangeCopy2.parentElement(); //If user clicks the input button without selecting text, then moveToElementText throws an error. if (parentElement1 instanceof HTMLInputElement || parentElement2 instanceof HTMLInputElement) < return null; >rangeObj1.moveToElementText(parentElement1); //Select all text of parentElement rangeObj1.setEndPoint('EndToEnd', rangeCopy1); //Set end point to the first character of the 'real' selection rangeObj2.moveToElementText(parentElement2); rangeObj2.setEndPoint('EndToEnd', rangeCopy2); //Set end point to the last character of the 'real' selection var text1 = rangeObj1.text; //Now we get all text from parentElement's first character upto the real selection's first character var text2 = rangeObj2.text; //Here we get all text from parentElement's first character upto the real selection's last character var nodeInfo1 = _findTextNode(parentElement1, text1); var nodeInfo2 = _findTextNode(parentElement2, text2); //Finally we are here range.startContainer = nodeInfo1.node; range.startOffset = nodeInfo1.offset; range.endContainer = nodeInfo2.node; range.endOffset = nodeInfo2.offset + 1; //End offset comes 1 position after the last character of selection. > return range; > function getRangeObject(win) < //Gets the first range object win = win || window; if (win.getSelection) < // Firefox/Chrome/Safari/Opera/IE9 try < return win.getSelection().getRangeAt(0); //W3C DOM Range Object >catch (e) < /*If no text is selected an exception might be thrown*/ >> else if (win.document.selection) < // IE8 var range = win.document.selection.createRange(); //Microsoft TextRange Object return fixIERangeObject(range, win); >return null; >
           Выделите текст: 
    The quick brown fox jumped over the lazy dog

    Код функций getRangeObject(win) для получения выделения в окне и fixIERangeObject(range, win) для исправления TextRange – в песочнице вместе с этим примером.

    Поделиться

    Комментарии

    перед тем как писать…

    • Если вам кажется, что в статье что-то не так — вместо комментария напишите на GitHub.
    • Для одной строки кода используйте тег , для нескольких строк кода — тег , если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)
    • Если что-то непонятно в статье — пишите, что именно и с какого места.
    • © 2007—2024 Илья Кантор
    • о проекте
    • связаться с нами
    • пользовательское соглашение
    • политика конфиденциальности

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *