BrowserNav (Навигация по обзору)
Автор:- Исходный код дополнения: Посетить Web-сайт browsernav
Краткое описание
Дополнение BrowserNav предоставляет пользователям NVDA мощные навигационные команды в режиме обзора. Оно работает в веб-браузерах, а также в любых других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
BrowserNav можно использовать для навигации по горизонтальному смещению от левого края экрана, по размеру шрифта или по стилю шрифта.
При навигации по горизонтальному смещению можно легко найти абзацы, выровненные по вертикали на странице.
В частности, вы можете нажать NVDA+Alt+Стрелка вниз или Стрелка вверх, чтобы перейти к следующему или предыдущему абзацу с таким же смещением.
Например, это может быть полезно при просмотре иерархических деревьев комментариев (например, на reddit.com), чтобы переходить между комментариями первого уровня и пропускать все комментарии более высокого уровня.
При навигации по размеру шрифта вы можете легко найти абзацы, написанные одинаковым размером шрифта или меньшим/большим размером шрифта.
Вы также можете ориентироваться по размеру шрифта с ограничением на тот же стиль шрифта.
Для переключения между этими вариантами используется ротор BrowserNav. В зависимости от настройки этого ротора, BrowserNav будет сигнализировать либо о горизонтальном смещении, либо о размере шрифта выбранного в данный момент элемента. Кроме того, BrowserNav будет издавать короткий звук при выполнении команд Быстрой навигации, чтобы показать, сколько текста было пропущено (эта функция доступна только в Google Chrome и Firefox).
BrowserNav работает в любом браузере, поддерживаемом NVDA. Хотя некоторые функции могут быть доступны не во всех браузерах. BrowserNav также работает в других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
Весь функционал дополнения подробно описан в справочном руководстве.
Основная информация
| Название | Версия | Совместимость с API NVDA | Последняя протестированная версия NVDA | Минимальная версия NVDA | Дата загрузки в каталог | Размер | Лицензия |
|---|---|---|---|---|---|---|---|
| browsernav | 2.7.8 | 2026.1 | 2026.1 | 2026.1 | 25-02-2026 21:42:45 | 15782 Кб. | GPL v2 |
Информация о локализации на русский язык
🔝 Назад к оглавлениюСкачать
⬇ Перейти к истории версий 🔝 Назад к оглавлениюРазделы
🔝 Назад к оглавлениюСправка
Подробнее
BrowserNav (Навигация по обзору)
Дополнение BrowserNav предоставляет пользователям NVDA мощные команды навигации в режиме обзора. Оно работает в веб-браузерах, а также в любых других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
Загрузка
Пожалуйста, установите через магазин дополнений.
Использование в браузерах и других программах, поддерживающих режим обзора
Обратите внимание, что начиная с NVDA v2024.2, команды вертикальной навигации и навигации по элементам с одинаковым стилем теперь доступны в ядре NVDA. Предпочтительнее использовать встроенные команды. Для них не назначено никаких жестов по умолчанию, поэтому жесты должны быть назначены пользователем в диалоге «Жесты ввода».
BrowserNav можно использовать для навигации по горизонтальному отступу от левого края экрана, по размеру шрифта или по стилю шрифта.
- При навигации по горизонтальному отступу можно легко находить абзацы, которые выровнены по вертикали на странице. В частности, можно нажать
NVDA+Alt+Стрелка внизилиСтрелка вверх, чтобы перейти к следующему или предыдущему абзацу с таким же отступом. Например, это может быть полезно при просмотре иерархических деревьев комментариев (например, на reddit.com) для перехода между комментариями первого уровня, пропуская все комментарии более высокого уровня. - При навигации по размеру шрифта можно легко находить абзацы, написанные тем же размером шрифта, или с меньшим/большим размером шрифта.
- Также можно перемещаться по размеру шрифта с учетом того же стиля шрифта.
Ротор BrowserNav используется для переключения между этими параметрами. В зависимости от настройки ротора BrowserNav будет звуковыми сигналами указывать либо горизонтальный отступ, либо размер шрифта текущего выбранного элемента. Кроме того, BrowserNav будет издавать треск при командах быстрой навигации, чтобы указать, сколько текста было пропущено (эта функция доступна только в Google Chrome и Firefox).
BrowserNav работает в любом браузере, поддерживаемом NVDA. Хотя некоторые функции могут быть недоступны во всех браузерах. BrowserNav также работает в других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
Клавиши:
NVDA+Alt+Стрелка вверхилиСтрелка вниз: Перейти к предыдущему или следующему абзацу с тем же горизонтальным отступом или размером шрифта.NVDA+Alt+HomeилиNVDA+Alt+Стрелка влево: Перейти к предыдущему абзацу с меньшим отступом или большим размером шрифта (родительский абзац).NVDA+Alt+EndилиNVDA+Control+Alt+Стрелка влево: Перейти к следующему абзацу с меньшим отступом или большим размером шрифта (следующий родительский абзац).NVDA+Alt+PageDownилиNVDA+Alt+Стрелка вправо: Перейти к следующему абзацу с большим отступом или меньшим размером шрифта (дочерний абзац).NVDA+Alt+PageUpилиNVDA+Control+Alt+Стрелка вправо: Перейти к предыдущему абзацу с большим отступом или меньшим размером шрифта (предыдущий дочерний абзац).NVDA+O: Переключение параметров ротора между горизонтальным отступом, размером шрифта, размером шрифта со стилем шрифта.\илиShift+\(обратная косая черта): Прокрутка вверх или вниз для отображения каждого элемента страницы; может быть полезно на динамических веб-страницах для загрузки всех элементов; также может быть полезно на веб-страницах с бесконечной прокруткой для загрузки следующей порции.NVDA+Shift+Стрелка влево: Вернуться к предыдущему положению курсора в текущем документе.NVDA+E: Редактирование полу-доступных полей редактирования — см. соответствующий раздел ниже.TилиShift+T: Перейти к следующей или предыдущей таблице, но поместить курсор в первую ячейку. Иногда NVDA помещает курсор прямо перед первой ячейкой, и BrowserNav исправляет это поведение.
Закладки быстрого перехода
Закладки быстрого перехода BrowserNav — это мощный инструмент, позволяющий перемещаться по веб-страницам и автоматизировать некоторые повторяющиеся действия.
Клавиши для работы с закладками
NVDA+J: Показать всплывающее меню быстрого перехода.JилиShift+J: Перейти к следующей или предыдущей закладке быстрого перехода./иControl+/: Включение/отключение режима пропуска беспорядка (SkipClutter) для навигации по строкам (стрелки вверх/вниз) и по абзацам (Control+Стрелка вверхиControl+Стрелка вниз) соответственно.Alt+J: Активировать все закладки быстрого щелчка на текущей странице.Control+J: Озвучить все закладки быстрого озвучивания на текущей странице.Alt+1,Alt+2, ...,Alt+0: Перейти к следующей иерархической закладке соответствующего уровня. 0 соответствует уровню 10; альтернативно, вызвать числовой скрипт, если он определен.Shift+Alt+1,Shift+Alt+2, ...,Shift+Alt+0: Перейти к предыдущей иерархической закладке.Alt+`` илиShift+Alt+``: Перейти к следующей или предыдущей иерархической закладке любого уровня.
Вы также можете настроить пользовательские клавиши для большинства типов закладок (кроме закладок пропуска беспорядка, иерархических и закладок с числовыми скриптами).
Сайты
Первое, что вам нужно будет настроить, это сайт, на котором вы хотите создавать закладки. В большинстве случаев вы захотите указать тип соответствия как «Соответствие домену» или «Соответствие домену и его поддоменам». Чтобы проиллюстрировать последний вариант, вы можете указать:
- URL: amazon.com
- Тип соответствия: Соответствие домену и его поддоменам
- Это будет соответствовать amazon.com, smile.amazon.com и всем другим доменам *.amazon.com.
Если вам нужен более точный контроль, вы также можете указать точный URL или определить регулярное выражение для URL.
Из-за такого гибкого определения на каждой данной веб-странице может быть одновременно активно несколько сайтов быстрого перехода.
Типы закладок
После того как вы настроили определение сайта, вы можете приступить к созданию на нём закладок.
BrowserNav поддерживает несколько типов закладок:
- Закладки быстрого перехода: к ним можно перейти, нажав
JилиShift+J. - Закладки пропуска беспорядка (SkipClutter): Эти закладки автоматически пропускаются при навигации по строкам (стрелки вверх/вниз) или по абзацам (
Control+Стрелка вверх/Стрелка вниз). Это позволяет скрыть беспорядок на веб-страницах, такой как пустые строки, временные метки и любую другую избыточную информацию. Информация не удаляется полностью, пропуск беспорядка можно временно отключить с помощью команд/илиControl+/. По умолчанию пропуск беспорядка пропускает пустые абзацы на всех веб-сайтах. - Закладки быстрого щелчка: вы можете помечать интерактивные элементы, такие как ссылки, кнопки или флажки, как закладки быстрого щелчка. Затем, нажав
Alt+J, вы можете быстро активировать все закладки быстрого щелчка на текущей странице одним нажатием клавиши, не перемещая курсор. Это может быть удобно для нажатия часто используемой кнопки на веб-сайте, например, кнопки воспроизведения на YouTube или кнопки отключения звука на сайтах видеоконференций. - Закладки быстрого озвучивания: вы можете прочитать этот тип закладок, нажав клавиши
Control+J; курсор не перемещается. Это удобно для проверки часто изменяющихся элементов страницы. Вы также можете настроить закладку быстрого щелчка на автоматическое обновление, то есть BrowserNav будет периодически сканировать страницу и автоматически озвучивать сообщение, если соответствующий текст изменится. - Иерархические закладки: это похоже на закладки быстрого перехода, но здесь учитывается горизонтальный отступ закладки. Такие сайты, как Reddit и Hacker News, имеют иерархическое дерево комментариев, по которому пользователям программ чтения с экрана было довольно сложно эффективно перемещаться. На этих сайтах вы можете пометить комментарии как иерархическую закладку, а затем перемещаться между ними, нажимая
Alt+цифраилиShift+Alt+цифра, где цифра означает ряд цифр 1, 2, 3,...0 — это уровень комментария. По умолчанию BrowserNav имеет иерархические закладки, настроенные для Hacker News и reddit.com. - Закладки-скрипты: Просто выполняют предоставленный скрипт при вызове.
- Числовые скрипты: нажмите
Alt+0...Alt+9, чтобы выполнить скрипт, принимающий число в качестве входных данных. Может быть полезно, например, для перехода кi-й закладке на странице одним нажатием клавиши.
Создание новой закладки
После того как вы настроили сайт, проще всего создать новую закладку, перейдя к нужному абзацу в документе, нажав NVDA+J, чтобы вызвать контекстное меню закладок, и выбрав «Закладки» > «Создать новую закладку для сайта...»
Откроется диалог настройки закладки. Теперь вы можете настроить закладку. Вы можете изменить способ сопоставления текста (например, сопоставление строки или регулярное выражение).
Другие параметры в этом диалоге:
- Категория: определяет тип закладки.
- Отображаемое имя: необязательное имя для этой закладки для лучшей читаемости. Это просто дает более понятное имя, чтобы вы могли идентифицировать эту закладку в длинном списке закладок.
- Озвучиваемое сообщение при обнаружении закладки: необязательное сообщение, которое будет озвучиваться каждый раз при попадании на эту закладку в документе.
- Смещение в абзацах: после нахождения соответствующего текста BrowserNav затем сместит курсор на это количество абзацев вперед или назад. Это может быть полезно, например, если целевой текст, к которому вы хотите перейти, не содержит никакого общего текста, который можно было бы сопоставить (например, сообщение на форуме), но предшествующий абзац содержит сопоставимое слово (например, «голосовать»). В этом случае вы можете сопоставить слово «голосовать» и указать смещение = 1, чтобы поместить курсор на первый абзац сообщения вместо слова «голосовать».
- Атрибуты: разделенный пробелами список атрибутов абзаца, которые должны совпадать. Список доступных атрибутов для текущего абзаца доступен в следующем поле формы. Список атрибутов предварительно заполнен некоторыми общими ролями, и обычно вам не нужно его редактировать.
- Доступные атрибуты в текущем абзаце: это все атрибуты, найденные в текущем абзаце. Вы можете выбрать их и нажать пробел, чтобы добавить их в список сопоставляемых атрибутов.
Расширенные параметры сайта
В диалоге настройки сайта вы можете указать ряд дополнительных параметров:
- Отображаемое имя: необязательное отображаемое имя для лучшей читаемости в списке сайтов.
- Режим фокуса: это позволяет переопределить стандартную обработку событий фокуса в NVDA. Некоторые веб-сайты неправильно используют события фокуса. Чтобы использовать их более удобно, вы можете либо игнорировать события фокуса, либо отключить автоматический вход в режим фокуса при получении события фокуса.
- Режим динамической области: Некоторые веб-сайты неправильно используют динамические области. Эта опция позволяет отключить объявления динамических областей только для текущего веб-сайта.
- Режим звукового сигнала отладки: это в основном полезно для целей отладки. Вы можете заставить NVDA подавать звуковой сигнал при возникновении определенного события (фокус, обновление динамической области или успешный быстрый щелчок).
Скриптинг
Начиная с BrowserNav v2.5, вы можете настраивать свои закладки с помощью скриптов на Python. Скриптинг можно использовать для двух целей:
- Для улучшения алгоритма сопоставления там, где существующих параметров сопоставления недостаточно. Это относится к закладкам быстрого перехода, быстрого озвучивания, быстрого щелчка, иерархическим закладкам и закладкам пропуска беспорядка.
- Для выполнения произвольного кода Python с целью автоматизации определенных действий на веб-страницах. Это можно сделать с помощью закладок-скриптов или числовых скриптов.
API скриптов
В вашем скрипте вам доступны следующие переменные:
p— текущий абзац. Это экземпляр классаParagraph, определенного в paragraph.pyt— текущий объектtextInfo.
Рекомендуется работать с абзацами, так как они предоставляют интерфейс более высокого уровня, чем textInfo.
Ваш скрипт должен решить, соответствует ли текущий абзац вашему пользовательскому правилу или нет. Вы можете:
- Вернуть
True, если совпадает, в противном случаеFalse. - Вернуть
Noneили не использовать операторreturn, чтобы указать на отсутствие совпадения. - Вернуть целое число
i, чтобы указать, чтоi-й следующий илиi-й предыдущий абзац совпадает и должен быть озвучен вместо текущего абзаца. - Вернуть кортеж
(i: int, s: str), чтобы указать совпадение со смещением (см. предыдущий пункт) и заставить BrowserNav озвучить сообщениеs. - Вызвать функцию
match(), чтобы указать на совпадение. Эта функция внутренне вызывает исключение, так что выполнение вашего скрипта будет прекращено после вызова match. Функция определяется как:def match( offset: int | TextInfo | Paragraph = None, message: str|TextInfo|Paragraph = None, xLocation: int|TextInfo|Paragraph = None) -> None, )message— необязательное сообщение, которое будет озвучено перед совпадением.xLocationявляется необязательным и используется только в иерархических закладках для вычисления уровня.
Вам также разрешено импортировать любые модули и писать скрипты общего назначения.
Вы можете использовать оператор print() для отладки вашего скрипта: вывод будет направлен в журнал NVDA.
Примеры скриптов
-
Этот скрипт проверяет, что текущий абзац является ссылкой и что текст предыдущего заголовка 5-го уровня начинается с текста текущего абзаца:
try: if controlTypes.Role.LINK in p.roles and p.previousHeading5.textInfo.text.startswith(p.text): print(f"pp5 {p.previousHeading5.textInfo.text}") return True except NotFoundError: return None -
Этот скрипт не выполняет сопоставление, а активирует последнее поле редактирования на странице:
p.end.previous.previousEdit.activate() -
Этот скрипт находит имя пользователя, которое может быть на один или два абзаца вперед; затем он находит начало комментария, анализируя размер шрифта; затем он находит конец комментария, ища текст «Reply». Затем он сопоставляет все тело комментария и добавляет имя пользователя, которое будет озвучено перед сопоставленным текстом:
user = p.next if user.text == "downvote": user = user.next try: username = user.text.split()[0] except IndexError: username = '?' pp = p begin = None for i in range(5): fs = pp.attributes.get(ParagraphAttribute.FONT_SIZE, []) #print(f"i={i} fs={fs}") if '9_pt' in fs: begin = pp break pp = pp.next else: return end = begin while end.text != 'reply': end = end.next match(textInfoRange(begin, end), username) -
Этот скрипт является генератором, что означает, что то, что он выдает, будет использоваться как время ожидания перед выполнением следующей строки. Этот скрипт будет выполняться в фоновом потоке неблокирующим образом. Этот скрипт выполняет серию действий:
- Находит кнопку с заданным именем и нажимает её.
- Входит в открывшийся диалог:
p.home.nextEmbeddedObject.activate() - Получает вновь сфокусированный элемент внутри этого диалога:
d = getFocusParagraph() - Находит и устанавливает флажок в этом диалоге.
- Находит другую кнопку в этом окне диалога по имени и нажимает её.
Эти шаги повторяются 20 раз с помощью функции
retry. Затем после паузы в 500 мс находит кнопку «Run Query» и нажимает её.def waitForDialogAndClickCheckbox(): try: p.home.find("Link Last Used").activate() p.home.nextEmbeddedObject.activate() except NotFoundError: pass d = getFocusParagraph() c = d.home.nextCheckBox if controlTypes.State.CHECKED not in c.obj.states: c.activate() d.home.find("Link QCPR Project").activate()
yield from retry(waitForDialogAndClickCheckbox, count=20) yield 500 yield from retry(lambda: p.home.find("Run Query").activate(), count=10)
-
Это числовой скрипт, поскольку он принимает
levelв качестве входной переменной. Он находитlevel-е поле редактирования от начала страницы (или от конца, если level отрицательный) и вызывает для негоscript_editJupyter.if level > 0: p = p.home for i in range(level): p = Paragraph(p.nextEdit.textInfo) elif level <= 0: level = 1-level p = p.end.previous tones.beep(500, 50) for i in range(level): p = Paragraph(p.previousEdit.textInfo) else: tones.beep(500, 50) p.textInfo.obj.currentFocusableNVDAObject = p.textInfo.focusableNVDAObjectAtStart p.textInfo.obj.script_editJupyter(None)Настройка
Определения закладок хранятся в каталоге конфигурации NVDA в файле browserNavRules.json. Вы можете редактировать этот файл вручную или поделиться им с кем-либо.
Каталог конфигурации NVDA можно найти, открыв меню «Пуск» и введя: «Открыть каталог пользовательской конфигурации NVDA».
BrowserNav поставляется с файлом конфигурации по умолчанию, содержащим примеры закладок.
Редактирование полу-доступных полей редактирования
Многие современные веб-приложения, в частности Jupyter и другие, используют поля редактирования, которые не совсем доступны: например, они выглядят пустыми, но вы можете копировать текст в них и из них с помощью клавиш Control+A, Control+C и Control+V.
BrowserNav предлагает экспериментальную функцию для редактирования этих полей более удобным способом. Чтобы использовать её:
- Найдите поле редактирования в окне браузера.
- Нажмите
NVDA+E. - Появится новое окно с содержимым этого поля редактирования.
- Отредактируйте содержимое этого поля в данном окне.
- Когда закончите, вы можете нажать
Escape, чтобы закрыть доступное окно редактирования и обновить поле редактирования на веб-странице. - Альтернативно, вы можете нажать
Control+Enter,Shift+EnterилиAlt+Enter. Это закроет окно редактирования, обновит поле и передаст нажатие клавиш веб-приложению. - Чтобы закрыть окно редактирования без сохранения изменений, нажмите
Alt+F4. - В любой момент, если содержимое ранее отредактированного текста будет потеряно, нажмите
NVDA+Control+E, чтобы скопировать его в буфер обмена.
Примечания:
- Не меняйте состояние браузера, например, не переключайте вкладки и не фокусируйте другие элементы на вкладке, пока открыто окно редактирования текста. Это помешает BrowserNav правильно обновить текст в поле редактирования.
- Убедитесь, что вы быстро отпускаете модификаторы
Control,ShiftилиAltпосле нажатияControl+Enter,Shift+EnterилиAlt+Enter. Удержание их более секунды вызовет проблемы. - Эта функция в настоящее время является экспериментальной. Пожалуйста, рассчитывайте только на 90-95% успеха.
- Она была тщательно протестирована с Google Chrome и Firefox. Она может работать и в других браузерах, но существует более высокая вероятность возникновения проблем, таких как потеря информации.
Исходный код
Исходный код доступен по адресу: http://github.com/mltony/nvda-indent-nav.