为群晖DSM系统添加鼠标侧键功能
// ==UserScript==
// @name 群晖DSM6 FileStation导航
// @namespace http://tampermonkey.net/
// @version 2024-10-29
// @description 为群晖DSM系统添加鼠标侧键功能
// @author xiyuesaves,tuwei
// @match */*
// @icon https://www.google.com/s2/favicons?sz=64&domain=www.synology.cn
// @grant none
// @license GPL-3.0
// ==/UserScript==
(function () {
"use strict";
if(!document.querySelector("#sds-wallpaper")){
console.log("已退出")
return
}
const BACK_BUTTON = 3;
const FORWARD_BUTTON = 4;
const blockedButtons = new Set([BACK_BUTTON, FORWARD_BUTTON]);
window.addEventListener("mouseup", (event) => {
const button = event.button;
if (blockedButtons.has(button)) {
event.stopPropagation();
event.preventDefault();
const syonWindow = event.target.closest(".x-window,.v-window");
// 套件中心
const syonAppWindow = event.target.closest(".x-window,.sds-window-v5");
// 套件中心
if (syonWindow) {
const homeBtn = syonWindow.querySelector('[syno-id="home-button"]');
// const backBtn = syonWindow.querySelector(".x-btn.syno-sds-fs-tbar-back-wrap:not(.x-item-disabled),.x-btn.synopkg-toolbar-back-btn:not(.x-item-disabled)");
// const nextBtn = syonWindow.querySelector(".x-btn.syno-sds-fs-tbar-next-wrap:not(.x-item-disabled),.x-btn.synopkg-toolbar-next-btn:not(.x-item-disabled)");
const backBtn = syonWindow.querySelector(".syno-sds-fs-tbar-back[aria-disabled=false]");
const nextBtn = syonWindow.querySelector(".syno-sds-fs-tbar-next[aria-disabled=false]");
if (button === BACK_BUTTON && backBtn) {
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mousedown"));
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mouseup"));
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("click"));
return;
}
if (button === BACK_BUTTON && homeBtn) {
homeBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mousedown"));
homeBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mouseup"));
homeBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("click"));
return;
}
if (button === FORWARD_BUTTON && nextBtn) {
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mousedown"));
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mouseup"));
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("click"));
return;
}
}
if (syonAppWindow) {
const backBtn = syonWindow.querySelector(".syno-pkg-backbtn[aria-disabled=false]");
const nextBtn = syonWindow.querySelector(".syno-pkg-nextbtn[aria-disabled=false]");
if (button === BACK_BUTTON && backBtn) {
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mousedown"));
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mouseup"));
backBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("click"));
return;
}
if (button === FORWARD_BUTTON && nextBtn) {
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mousedown"));
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("mouseup"));
nextBtn.parentElement.parentElement.dispatchEvent(new MouseEvent("click"));
return;
}
}
}
});
})();