如何在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
相关产品推荐
相关产品推荐

