我使用 autohotkey 在按下鼠标中键时执行 ctrl+home 组合键,结果是跳转到我所在网页的顶部。但是,如果光标位于文本输入框内,则此操作会失败,因为在这种情况下 ctrl+home 只会将光标带到输入框的开头。
在按 ctrl+home 之前按 tab 键有时可以起作用,但并非总是如此,因为光标可能会简单地移动到另一个输入框。按 alt 可将光标从输入框中移除,但之后按 ctrl+home 将不起作用。
我的目标是能够可靠地跳转到任何网页的顶部。
我目前的脚本是:
MButton::
SendInput ^{home}
return
;
答案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
;
对我来说,这种方法很有效,因为我处理的页面(首先需要这个解决方案)都是相同的高度。
答案2
!MButton:: ; ALT + Middle Mouse Button
SendInput {PgUp 200} ;press Page-up key 200 times
还有一些比较 hack 的(不推荐)解决方案:
!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++AltHome
MButton::
SendInput ^!{HOME}