Art*_*Art 3 google-chrome autohotkey
我以一种将Cmd+Left和Cmd+Right击键识别为Chrome 中的Back/Forward导航的方式设置了 AutoHotkey 。
问题是当我在文本框中输入文本时,它还可以识别被按下的那些键。但是,在输入文本时,我希望这些组合键执行不同的功能 - 跳转到行首/行尾,类似于Ctrl+ Left/ Right。
有没有办法让一个映射适用于文本框,而另一个映射适用于 AutoHotkey 中的其他所有内容?
谷歌浏览器中最深的 AutoHotkey (AHK) 可以检测到,与 web 内容相关的是Chrome_RenderWidgetHostHWND1控件。此控件是Web 内容的视口。我们input和textareaHTML 元素在渲染内容的DOM内部更深一些。
因此,我们需要找到一种方法来通过 HTML 元素和 AutoHotkey 之间的这堵墙进行通信。幸运的是,有一个与 HTML 站在同一边的玩家会说 AHK 的行话:JavaScript!
为何如此?简单来说,JavaScript 可以在元素获得或失去焦点时执行一个动作。这些操作之一可以是更改页面标题。这反过来会更改 Google Chrome 的窗口标题,而 AHK 可以读取窗口标题!
安装我的InputFocusTitleChange.user.js 用户脚本。(来源)
现在您可以在 AutoHotkey 中使用以下语法:
SetTitleMatchMode, RegEx
#x:: ; normal hotkey
; do something
return
#IfWinActive, \[AHK\] - Google Chrome$
#x:: ; input/textarea focus hotkey
; do something
return
#IfWinActive
Run Code Online (Sandbox Code Playgroud)
当 HTMLinput或textarea元素获得焦点时,用户脚本会附加 [AHK]到页面标题,从而更改 Google Chrome 的窗口标题。

AHK 可以利用这个特性,"[AHK] - Google Chrome"无论窗口的标题是否以结尾,间接地将 HTML input/ textareafocus 与一组命令连接起来。
根据我的测试,有两个问题:
如果input/textarea在页面加载时已经获得焦点,则[AHK]可能不会添加到页面标题中。您必须将焦点从元素上移开,然后再移回以更改标题。
如果input/textarea元素是在页面加载后动态生成的(这也是在脚本加载时),那么这些元素将不会产生任何影响。
我将继续研究这个解决方案。如果您有任何建议或知道解决这些 JavaScript 问题的方法,请随时告诉我和/或贡献。源在上面发布并托管在 Github 上。
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |