You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TamperMonkey中用JS实现F键映射为右方向键并修复无效代码

问题分析

原有代码存在2个核心问题:

  • 你写的keyCode == 39只是无意义的相等判断语句,没有任何执行逻辑,既没有阻止F键的默认行为,也没有主动触发右方向键的对应事件。
  • keyCode属性已被Web标准弃用,虽然部分浏览器还兼容,但更推荐使用e.key做按键判断,逻辑更直观。
修复后的完整TamperMonkey脚本
// ==UserScript==
// @name         F键映射右方向键
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  将无修饰键的F键映射为右方向键
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    document.addEventListener('keydown', function(e) {
        // 排除输入框、富文本编辑器等可输入场景,避免影响正常打字
        const activeEl = document.activeElement;
        const isInput = activeEl.tagName === 'INPUT' || activeEl.tagName === 'TEXTAREA' || activeEl.isContentEditable;
        if (isInput) return;

        // 匹配无修饰键的F键按下
        if (e.key === 'f' && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {
            // 阻止F键默认行为(比如触发浏览器页面搜索)
            e.preventDefault();
            // 构造右方向键的keydown事件
            const rightArrowEvent = new KeyboardEvent('keydown', {
                key: 'ArrowRight',
                code: 'ArrowRight',
                keyCode: 39,
                which: 39,
                bubbles: true,
                cancelable: true
            });
            // 分发事件,触发右方向键的对应行为
            document.dispatchEvent(rightArrowEvent);
        }
    }, false);
})();
额外说明
  • 脚本默认排除了输入框、可编辑区域的触发逻辑,如果你需要在输入场景也生效,删掉对应判断代码即可。
  • 脚本默认匹配所有网站,你可以修改@match规则限定只在特定网站生效。

内容的提问来源于stack exchange,提问作者oppala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 01:54:03