// ==UserScript== // @name 百度网盘自动取消订阅+关闭保存弹窗 // @namespace https://scriptcat.org/ // @version 6.0 // @description 百度网盘保存分享文件时,真实取消「订阅此分享」后再自动关闭弹窗 // @author 豆包 // @match *://pan.baidu.com/* // @match *://yun.baidu.com/* // @grant none // @run-at document-end // @license MIT // ==/UserScript== (function() { 'use strict'; let isProcessing = false; function handleSaveDialog() { if (isProcessing) return; // 查找处于开启状态的订阅开关 const subscribeOn = document.querySelector('input.subscribe-switch-on[checked="true"]'); // 查找保存成功弹窗的关闭按钮 const closeBtn = document.querySelector('.fx-icon-close.icon-svg-s-close'); // 确认是保存成功弹窗 const hasSaveSuccess = document.body.textContent.includes('保存成功'); if (!subscribeOn || !closeBtn || !hasSaveSuccess) return; isProcessing = true; console.log('[脚本] 检测到保存成功弹窗,开始取消订阅'); // 1. 真实点击开关,触发取消订阅逻辑 const switchLabel = subscribeOn.closest('label.subscribe-switch'); if (switchLabel) { switchLabel.click(); console.log('[脚本] 已点击取消订阅开关'); } // 2. 延迟 700ms 再关闭弹窗,确保取消订阅的请求发送完成 setTimeout(() => { // 二次确认:开关确实已关闭,再关弹窗 const stillOn = document.querySelector('input.subscribe-switch-on[checked="true"]'); if (!stillOn && closeBtn) { closeBtn.click(); console.log('[脚本] 订阅已取消,关闭弹窗'); } // 1.5秒后重置状态,支持下一次保存 setTimeout(() => { isProcessing = false; }, 1500); }, 700); } // DOM变化监听 const observer = new MutationObserver(() => { if (!isProcessing) { handleSaveDialog(); } }); observer.observe(document.body, { childList: true, subtree: true, attributes: true }); // 兜底轮询 setInterval(() => { if (!isProcessing) { handleSaveDialog(); } }, 600); console.log('[脚本] 百度网盘自动取消订阅+关弹窗 v6.0 已加载'); })();