Листай-ка!

Крошечное (11 Кбайт) браузерное расширение с открытым (minified) кодом и настройками. Предназначено для скроллинга (прокручивания) страницы правой кнопкой мыши или перемещением курсора мыши. Для вызова контекстного меню используется комбинация клавиш клавиатуры и правой кнопки мыши. С "Листай-ка!" прокручивать страницу удобнее, чем колёсиком мыши или при помощи клавиатуры. Убедитесь в этом сами - протестируйте работу расширения без его установки. Для этого перейдите к следующему разделу - "Обучение".

Обучение

Прежде чем перейти к обучению, обратите внимание на тонкую голубую линию в нижней части экрана. Она разграничивает части страницы, которые будут скрыты и показаны при скроллинге вниз. Всё, что расположено выше этой линии, будет скрыто, а что находится ниже - показано вместе со следующей частью страницы. Линию можно отключить (совсем или только в полноэкранном режиме, чтобы она не мешала просмотру фильмов, например) или расположить на удобной высоте. Можно изменить её цвет, фон, толщину и прозрачность. Об этом и многом другом сказано в разделе "Настройка".
Обратите внимание: любые приведённые ниже действия можно настроить или отключить.
Для прохождения этапов обучения последовательно выполните действия:
1)
Один раз кликните правой кнопкой мыши в любом месте. Страница будет прокручена.
2)
Чтобы вызвать контекстное меню браузера теперь, когда правая кнопка мыши занята расширением, необходимо сперва нажать и отпустить клавишу "Ctrl" (левую). Это послужит сигналом программе о том, что следующий клик правой кнопки мыши предназначен для вызова контекстного меню. Попробуйте. Комбинацию клавиш, "освобождающих" правую кнопку мыши, можно изменить. С подробностями ознакомьтесь в пункте "Комбинации клавиш клавиатуры" раздела "Настройка".
3)
Расширение использует жесты мыши. Зажмите правую кнопку мыши и проведите мышь вверх или вниз, а затем отпустите кнопку. Страница будет прокручена. Направления "вправо" и "влево" также используются. Длинный жест (по умолчанию - более 40% высоты или ширины экрана) переместит область просмотра в самое начало или в конец страницы.
4)
При отключенной функции клика правой кнопки мыши (на этой странице она включена) можно использовать функцию скроллинга двумя кликами - первый клик указывает начальную позицию направления (аналогично зажатой кнопке мыши перед осуществлением жеста), а второй - конечную (аналогично отпущенной кнопке мыши после совершения жеста). Установите расширение и исследуйте эту функцию, если необходимо.
5)
Когда на странице много текста, может оказаться удобным пролистывать её без кликов и жестов, а простым движением курсора мыши. Попробуйте эту функцию - нажмите и отпустите комбинацию клавиш "Shift+Ctrl+Z" (клавиши "Shift" и "Ctrl" - левые). Теперь вы находитесь в режиме "Долгое чтение". В нём вы можете просто повести мышь немного в сторону и скроллинг будет выполнен. Между скроллингами есть небольшая пауза (по умолчанию - 1000 миллисекунд, или 1 секунда), за время которой скроллинг невозможен. Пауза необходима для разделения двух команд. Если вы хотите переместить курсор мыши без выполнения команды скроллинга, делайте это удерживая правую кнопку мыши. Для выхода из режима "Долгое чтение" используйте ту же (по умолчанию) комбинацию клавиш.

Версия

Текущая версия расширения - 1.0. Версия вашего расширения указана в разделе "Сведения" карточки расширения в браузере, и в файлах "manifest.json" и "script.js". Если вы обнаружите ошибку в работе расширения, зайдите на страницу, на которой вы сейчас находитесь (её адрес также указан в карточке расширения и в упомянутых файлах), и сравните текущую версию с используемой в вашем браузере. Возможно, эта ошибка уже исправлена в расширении с текущей версией.

Загрузка

Расширение состоит из трёх файлов ("manifest.json", "script.js" и "ico.png"). Скачайте на выбор: файлы как таковые (возможно, потребуется подтвердить разрешение на загрузку нескольких файлов) или файлы в zip-архиве (название архива - "list.zip"). Затем создайте любую папку и поместите в неё загруженные файлы (предварительно разархивируйте их, если вы скачали архив; сам архив копировать в папку не нужно).

Установка

Расширение необходимо установить вручную. В настройках браузера выберите "Расширения", а затем "Управление расширениями" (здесь и далее - названия и места расположения меню и кнопок могут отличаться). Найдите "Режим разработчика" и включите его. Появится кнопка "Загрузить распакованное расширение" - нажмите на неё. Выберите папку с файлами расширения и войдите в неё. Если ваш браузер поддерживает работу этого расширения, на экране будут показаны три его файла. Нажмите на кнопку "выбрать". Теперь расширение установлено. Вы можете выключить режим разработчика, и тогда, возможно, появится окно, в котором следует нажать на три точки справа от названия расширения и выбрать "Оставить расширение". Папку и файлы расширения после установки удалять не следует, иначе вы не сможете изменить настройки расширения или даже воспользоваться им.

Настройка

Расширение оптимально настроено. Если вы не владеете навыком редактирования файлов или не хотите тратить время и силы на настройку расширения, закройте инструкцию - она вам больше не понадобится. В противном случае, откройте в текстовом редакторе файл "script.js". Обратите внимание на параметры работы программы, которые представлены в виде переменных и, после знака "равно", их значений. Первая переменная ("keysContext") находится в 7 строке файла, а последняя ("fixedElements") - в 47 строке. Не вносите правки в данные, расположенные ниже 47 строки, если вы не программист - это наверняка повредит программу.
Ниже, на этой странице, представлены те же переменные со значениями по умолчанию и в том же порядке, но с комментариями, которые расположены под переменными. Описательная часть групп переменных расположена над ними. Вы можете изменить значения соответствующих переменных в файле "script.js". Изменяйте только числовые и указанные в кавычках значения. После внесённых изменений обновите расширение. В настройках выберите "Расширения", а затем "Управление расширениями". В плашке с расширением нажмите на полукруглую стрелку "Перезагрузить".
Комбинации клавиш клавиатуры
Несколько команд расширения могут быть вызваны нажатием комбинации клавиш клавиатуры. Ниже указаны параметры (переменные), содержащие эти комбинации. Например, для вызова контекстного меню браузера назначена клавиша "Ctrl" (левая). Предположим, вы хотите назначить комбинацию "Ctrl+Shift+K" для вызова контекстного меню. Последовательно выполните следующее:
1) поместите курсор мыши в расположенное ниже поле (наведите курсор, не нажимая - его нахождение в поле говорит программе о том, что вы намерены изменить комбинацию клавиш);
Наведите курсор мыши сюда:
2) нажмите и отпустите клавишу "Ctrl" или другую из комбинации. В поле появится обозначение нажатой клавиши, и оно и последующие обозначения будут сохранены в памяти компьютера (возможно, потребуется подтвердить браузеру согласие на изменение буфера обмена);
3) нажмите и отпустите две других клавиши (в любой последовательности);
4) откройте в текстовом редакторе файл "script.js" (теперь можно увести курсор мыши с поля - обозначения клавиш уже находятся в памяти компьютера);
5) найдите переменную "keysContext" (это первая переменная, она находится в начале файла) и в её значении замените то, что находится в кавычках, на сохранённые обозначения клавиш;
6) сохраните файл и обновите расширение (в настройках браузера выберите "Расширения", а затем "Управление расширениями". В плашке с расширением нажмите на полукруглую стрелку "Перезагрузить");
7) перезагрузите страницу браузера.
Теперь для того, чтобы вызвать контекстное меню, нужно нажать комбинацию клавиш "Ctrl+Shift+K", отпустить клавиши, а затем кликнуть правую кнопку мыши. Так же можно настроить комбинации клавиш и для других команд.
Обратите внимание:
1) функции комбинации клавиш зависимы от функций различных переменных и могут быть запрещены значениями этих переменных;
2) многие клавиатуры имеют ограничение на количество одновременно регистрируемых нажатий ("keyboard rollover"), поэтому слишком сложные комбинации клавиш могут не работать;
3) будьте осторожны с назначением комбинаций клавиш, которые уже используются браузером - это может привести к их нестабильной и некорректной работе;
4) чтобы запретить комбинацию клавиш, укажите пустое значение (оставьте просто кавычки). Например: keysReadingOff = "".

keysContext = "ControlLeft"

комбинация для вызова контекстного меню браузера:
"Ctrl" (левый)

keysOn = "ShiftLeft, ControlLeft, Space"

комбинация для включения расширения:
"Shift" (левый) + "Ctrl" (левый) + "пробел"

keysOff = "ShiftLeft, ControlLeft, Space"

комбинация для отключения расширения
"Shift" (левый) + "Ctrl" (левый) + "пробел"

keysReadingOn = "ShiftLeft, ControlLeft, KeyZ"

комбинация для включения функции "Долгое чтение"
"Shift" (левый) + "Ctrl" (левый) + "Z"

keysReadingOff = "ShiftLeft, ControlLeft, KeyZ"

комбинация для выключения функции "Долгое чтение"
"Shift" (левый) + "Ctrl" (левый) + "Z"

keysLineOn = "ShiftLeft, ControlLeft, KeyL"

комбинация показывает линию "Ограничитель"
"Shift" (левый) + "Ctrl" (левый) + "L"

keysLineOff = "ShiftLeft, ControlLeft, KeyL"

комбинация скрывает линию "Ограничитель"
"Shift" (левый) + "Ctrl" (левый) + "L"
Действия
Ниже указаны параметры действий программы при нажатии правой кнопки мыши (далее - клик), использовании жестов мыши, использовании функции "Долгое чтение".
Алгоритм манипуляций мышью для регистрации жеста:
1) нажать правую кнопку мыши;
2) провести мышь в любую сторону;
3) отпустить правую кнопку мыши.
Обратите внимание:
1) направление жеста определяется длиной пройденного мышью пути. Например, если мышь прошла одновременно 10 точек вверх и 20 точек вправо, то направление будет определено как "вправо". Если длины равные, то будет отдан приоритет направлениям "вверх" и "вниз";
2) клик - это тоже жест, но ограниченный длиной пути, указанной в переменной "clickAbs";
3) избегайте жестов по диагонали - ввиду двойственной неопределённости их команд, вы можете интерпретировать функции таких жестов как ошибочные. Например, если сделать жест из центра экрана в верхний правый угол, может показаться, что мышь прошла больший путь наверх, в то время как в действительности путь вправо может быть несколько длиннее, и программа выполнит команду для жеста вправо, а по умолчанию это - скроллинг вниз. В результате вместо ожидаемого перехода вверх произойдёт прямо противоположное: переход вниз.
Переменные могут иметь следующие числовые значения:
1 - отсутствие действия;
2 - скроллинг страницы вниз;
3 - скроллинг страницы вверх;
4 - скроллинг страницы в конец;
5 - скроллинг страницы в начало.

buttonClick = 2

клик

buttonDragBottom = 2

короткий жест вниз или вправо

buttonDragTop = 3

короткий жест вверх или влево

buttonDragBottomLong = 4

длинный жест вниз или вправо

buttonDragTopLong = 5

длинный жест вверх или влево

buttonDoubleBottom = 2

два клика ("коротких"); второй клик расположен несколько ниже или правее первого

buttonDoubleTop = 3

два клика ("коротких"); второй клик расположен несколько выше или левее первого

buttonDoubleBottomLong = 4

два клика ("длинных"); второй клик расположен значительно ниже или правее первого

buttonDoubleTopLong = 5

два клика ("длинных"); второй клик расположен значительно выше или левее первого
Обратите внимание: иногда может оказаться неясным, сделан один клик или два. Нажмите любую кнопку мыши, кроме правой - это выполнит команду "ни один клик не был сделан".

movementBottom = 2

движение курсора вниз или вправо

movementTop = 3

движение курсора вверх или влево
Длины пройденного мышью пути
Ниже указаны параметры длин пройденного мышью пути - минимальное количество точек, которое должна пройти мышь, чтобы направление было зафиксировано. Значения числовые или относительные, в процентах от высоты (для направлений "вверх" и "вниз") или от ширины (для направлений "влево" и "вправо") экрана. Процентные значения необходимо указывать в кавычках. Например, distanceDrag = "15" означает, что короткий жест будет засчитан, если пройденный мышью путь составляет не меньше 15% от высоты или ширины экрана, и если он меньше значения для длинного жеста.

distanceDrag = 10

короткий жест

distanceDragLong = "40"

длинный жест

distanceDouble = 10

два клика ("коротких")

distanceDoubleLong = "40"

два клика ("длинных")

movementDistance = 10

движение курсора для функции "Долгое чтение"
Длительность
Ниже указаны различные параметры длительности (в миллисекундах).

cancelTimer = 2500

Длительность ожидания отмены действия. Если в течение указанного времени не завершить клик или жест (не отпустить правую кнопку мыши), а также не осуществить второй клик, действие будет отменено.

movementTimer = 1000

интервал между движениями курсора для функции "Долгое чтение", разделяющий одно движение от другого
Курсор мыши

clickAbs = 5

Предельно допустимое отклонение курсора мыши (указано количество точек, в одну любую сторону) во время совершения клика. Как правило, клик - это быстро исполняемая последовательность двух действий: нажать кнопку, отпустить кнопку. И курсор мыши при этом обычно остаётся на месте. Функция данной переменной допускает отклонение курсора в сторону, не более чем на указанное количество точек. Если курсор уйдёт дальше, то это уже скорее не клик, а жест. Поэтому значение переменной "clickAbs" должно быть меньше, чем значение переменной "distanceDrag". Процентное значение не допускается.
Скроллинг
Ниже указаны параметры длины (высоты) скроллинга страницы и отступа при скроллинге. Значения числовые (количество точек экрана) или относительные, в процентах от высоты экрана. Процентные значения необходимо указывать в кавычках.

scrollSize = "100"

Длина скроллинга страницы. Например, значение по умолчанию - "100" указывает на то, что страницу следует прокрутить на 100%, то есть на один полный экран. При скроллинге в конец и в начало страницы значение переменной будет проигнорировано.

scrollOffset = "15"

Длина отступа при скроллинге страницы. Часть скрытой при скроллинге области страницы будет показана, если это возможно и указано не нулевое значение. Эта функция призвана наглядно показать последовательность и связность скроллинга. Функция не работает при скроллинге в конец и в начало страницы.
"Долгое чтение"
"Долгое чтение" - функция скроллинга страницы простым перемещением курсора мыши. Иногда, и особенно при длительном чтении, такая функция может быть очень удобной, хотя обычно она мешает взаимодействию со страницей. Для перехода к использованию "Долгого чтения" и обратно используйте комбинации клавиш, указанные в пункте "Комбинации клавиш клавиатуры" раздела "Настройка". При этом переменная "movementDistance" (указана выше) должна иметь значение больше нуля - это разрешит использование данной функции.
Для того, чтобы переместить курсор мыши без вызова функции (то есть, без осуществления скроллинга страницы), удерживайте правую кнопку мыши во время перемещения.
Обратите внимание на то, что функции жестов при использовании "Долгого чтения" не действуют, а клик приводит к повторению последней осуществлённой с помощью "Долгого чтения" команды. Ранее указанные в инструкции переменные, используемые функцией "Долгое чтение": movementBottom, movementTop, movementDistance, movementTimer.
"Ограничитель"
"Ограничитель" - линия, которая разграничивает части страницы, которые будут скрыты и показаны при скроллинге страницы вниз. Всё, что расположено выше этой линии, будет скрыто, а что находится ниже - показано вместе со следующей частью страницы. Место расположения линии зависит от значений переменных "scrollSize" и "scrollOffset". "Ограничитель" подскажет вам место на странице, ниже которого можно не читать, а осуществить скроллинг. По умолчанию функция "Ограничитель" отключена. Ниже указаны параметры использования "Ограничителя".

lineAllow = 0

0 - функция отключена, 1 - функция включена

lineFullScreen = 0

параметр отображения линии в полноэкранном режиме: 0 - линия не будет показана, 1 - линия будет показана

lineHeight = 1

Высота линии в точках. Если указать значение, равное нулю, то линия станет прямоугольником высотой до конца высоты окна страницы. Обратите внимание: линия перекрывает элементы управления на странице и поэтому они не будут реагировать на клик мыши (это не относится к функциям клика данного расширения).

lineBackground = "#226CDF"

фон линии: любое допустимое в CSS значение; строковый параметр, указывается в кавычках

lineOpacity = 50

прозрачность линии; в процентах, где 100 - линия полностью непрозрачна, 0 - линия полностью прозрачна (невидима)
Фиксированные элементы

fixedElements = 1

Фиксированные (остающиеся неподвижными при скроллинге) элементы страницы, такие как меню и другие, могут скрыть под собой часть прокручиваемой страницы (сделать её невидимой, заслонить её). Программа пытается определить такие элементы и "обойти" их (перематывает скрываемую часть ниже фиксированного элемента). Это не всегда удаётся, но довольно часто. Вы можете разрешить или запретить программе делать это. Значения переменной: 0 - функция отключена, 1 - функция включена. Обратите внимание: функция может быть задействована только в скроллинге страницы вниз.

Важные замечания

1) Команда для клика не будет выполнена, если после загрузки страницы не зафиксировано ни одного движения курсора мыши.
2) Команды для кликов и жестов не будут выполнены на полях ввода ("input" и "textarea").
3) Расширение предназначено для использования со стандартными мышками и в стандартных браузерах. Имитирующие их и нетипичные устройства могут не поддерживаться расширением.

Условия использования

Это бесплатное расширение. Распространяйте, изменяйте и используйте его без каких-либо ограничений, но с условием уважения и сохранения авторства. В описании к расширению должна оставаться ссылка на его официальный сайт: https://okox.ru/list

Дополнительно

Страница автора и разработчика расширения: https://vk.com/mihailuskov. Донат: https://donate.stream/uskov. Важна не сумма доната, а выражаемая через него признательность. Вам также могут быть полезны: расширение для автоматического копирования в память выделенного текста - https://okox.ru/bukovka; бесплатный self-hosted сервис статистики посещаемости сайта - https://okox.ru.

Спасибо за внимание!