1

Я использую autohotkey для выполнения комбинации ctrl+home, когда нажимаю среднюю кнопку мыши, в результате чего я перехожу на верх страницы, на которой я сейчас нахожусь. Это, однако, ломается, если курсор находится внутри поля ввода текста, так как ctrl+home в этом случае просто переводит курсор в начало поля ввода.

Выполнение вкладки до сочетания клавиш ctrl+home может иногда работать, но не всегда, поскольку курсор может просто переместиться в другое поле ввода. Нажатие alt удаляет курсор из поля ввода, но после этого ctrl+home не будет работать.

Моя цель состоит в том, чтобы иметь возможность надежно перейти на вершину любой веб-страницы.

Мой сценарий на данный момент:

MButton::
SendInput ^{home}
return
;

2 ответа2

1

@Marcelo дал мне идею использовать JavaScript. Раньше я думал об этом, но с горячими клавишами это казалось нереальным. Затем я вспомнил псевдопротокол JavaScript: и придумал следующий код, который работает надежно:

MButton::
SendInput ^{l}
Sleep 1
SendInput {Raw}javascript:document.activeElement.blur();
Sleep 1
SendInput {Enter}
Sleep 1
SendInput ^{home}
return
;

Сначала код использует CTRL+l для перехода к адресной строке, вводит туда JavaScript (Chrome не позволяет вставлять javascript: в адресной строке это нужно сделать как необработанный ввод). Нажмите Enter, чтобы выполнить код, и в этом случае простой Ctrl+Home работает, чтобы перейти наверх.

Команды Sleep необходимы после сочетаний клавиш, иначе ввод может быть искажен.

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

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

MButton::
SendInput {PgUp 5}
return
;

Это работает в моем случае довольно хорошо, так как страницы, с которыми я имею дело (что в первую очередь требовало такого решения), имеют одинаковую высоту.

0
!MButton:: ; ALT + Middle Mouse Button
SendInput {PgUp 200} ;press Page-up key 200 times

Еще несколько хакерских (не рекомендуемых) решений:

!MButton:: ; ALT + Middle Mouse Button
SendInput {F5} ;easy reload page for remove focus but its save current scroll
Sleep, 1000 ; wait for page loading
SendInput {HOME} ;go home

Вам нужно переместить курсор в пустое место на странице, прежде чем нажать ALT + средняя кнопка мыши:

!MButton:: ; ALT + Middle Mouse Button
MouseClick,left ; click on empty space on page with current mouse coord
SendInput {HOME} ;go home u drunk

Обновить:

Ключ найден для перехода на верхнюю страницу, даже если поле ввода сфокусировано, но работает только с некоторыми браузерами (не работает в Firefox). Ctrl+Alt+Home

MButton::
SendInput ^!{HOME}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .