秉着自己动手,丰衣足食的精神,既然现在FNOS不支持鼠标侧键,支持也遥遥无期,所以自己写了个油猴脚本,拦截浏览器默认行为,绑定飞牛文件管理器的前进后退按钮,支持在文件管理器前进后退。
使用前请注意:
1.需安装篡改猴插件;
2.需修改@match参数为自己的飞牛地址,例如 *//*.fnos.com/* # 如果有端口号也要加上
3.鼠标侧键的 event.button 通常取值:3 表示后退键,4 表示前进键(不同设备/浏览器可能有差异,若无效需自行调整)。如果鼠标键未生效,可能是 event.button
编号与你的设备不匹配,可通过控制台打印 event.button
确认实际值(在页面按 F12
打开开发者工具,输入 document.addEventListener('mousedown', e => console.log('按钮编号:', e.button))
后点击侧键查看)
4.本脚本基于Microsoft Edge浏览器和飞牛私有云OS 0.9.2,其他版本是否可用请以实际为准。
// ==UserScript==
// @name fnOS鼠标侧键优化版
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 通过侧键触发按钮点击
// @author dadamelon
// @match *://your-domian/*
// @grant none
// ==/UserScript==
function disableBrowserBackForward() {
const SELECTORS = {
forward: 'div[aria-label="导航"] button:nth-of-type(2)',
back: 'div[aria-label="导航"] button:first-of-type'
};
// 跟踪鼠标侧键状态:记录上一次事件的类型和按钮
let buttonState = {
3: null, // 后退键状态(null/down/up)
4: null // 前进键状态
};
// 同时监听 mousedown 和 mouseup 事件
document.addEventListener('mousedown', handleMouseButton, { passive: false });
document.addEventListener('mouseup', handleMouseButton, { passive: false });
function handleMouseButton(event) {
// 鼠标侧键的 button 值通常为 3(后退)和 4(前进)
if (event.button === 3 || event.button === 4) {
const button = event.button;
const eventType = event.type;
// 阻止默认行为
event.preventDefault();
event.stopPropagation();
// 状态管理:只在按键状态变化时执行操作
if (eventType === 'mousedown' && buttonState[button] !== 'down') {
// 记录按键被按下
buttonState[button] = 'down';
console.log(`鼠标侧键 ${button === 3 ? '后退' : '前进'} 被按下`);
} else if (eventType === 'mouseup' && buttonState[button] === 'down') {
// 记录按键被释放,并执行模拟点击
buttonState[button] = 'up';
console.log(`鼠标侧键 ${button === 3 ? '后退' : '前进'} 被释放,执行模拟点击`);
let target;
switch(button) {
case 3: // 后退键
target = document.querySelector(SELECTORS.back);
break;
case 4: // 前进键
target = document.querySelector(SELECTORS.forward);
break;
}
if (target) {
target.click();
console.log(`成功模拟点击${button === 3 ? '后退' : '前进'}按钮`);
}
// 重置状态,准备下一次按键
setTimeout(() => {
buttonState[button] = null;
}, 100);
}
// 防止其他可能的默认行为
return false;
}
}
}
// 立即应用
disableBrowserBackForward();