B站智能最常访问点击器
// ==UserScript==
// @name B站智能最常访问点击器
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 全场景覆盖的智能点击方案
// @author 平凡的世界
// @match https://space.bilibili.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 配置中心
const CONFIG = {
TARGET_TEXT: "最常访问", // 目标按钮文字
CHECK_INTERVAL: 500, // 基础检查间隔
MAX_WAIT_TIME: 10000, // 最大等待时间(ms)
OBSERVE_DEEP: true // 深度DOM监听
};
// 核心控制器
class ClickController {
constructor() {
this.observer = null;
this.timer = null;
this.isRunning = false;
this.init();
}
// 初始化监控
init() {
this.setupRouterListener();
this.setupDOMObserver();
this.startCheckCycle();
}
// 路由变化监听
setupRouterListener() {
let lastUrl = location.href;
setInterval(() => {
if (location.href !== lastUrl) {
lastUrl = location.href;
this.onRouteChange();
}
}, 1000);
}
// DOM深度监控
setupDOMObserver() {
this.observer = new MutationObserver(mutations => {
if (this.isTargetPage()) this.attemptClick();
});
this.observer.observe(document, {
childList: true,
subtree: CONFIG.OBSERVE_DEEP
});
}
// 周期性检查
startCheckCycle() {
this.timer = setInterval(() => {
if (this.isTargetPage()) this.attemptClick();
}, CONFIG.CHECK_INTERVAL);
}
// 智能点击逻辑
attemptClick() {
if (this.isRunning) return;
const btn = this.findTargetButton();
if (btn) {
this.isRunning = true;
console.log('触发智能点击');
btn.click();
setTimeout(() => this.isRunning = false, 1000);
}
}
// 精准按钮定位
findTargetButton() {
return [...document.querySelectorAll('.be-radio, .radio-filter__item')]
.find(btn => btn.textContent.includes(CONFIG.TARGET_TEXT));
}
// 路由变化处理
onRouteChange() {
if (this.isTargetPage()) {
this.attemptClick();
this.resetObserver();
}
}
// 页面类型判断
isTargetPage() {
return /\/relation\/follow|\/fans\/follow/.test(location.pathname);
}
// 重置观察器
resetObserver() {
this.observer.disconnect();
this.setupDOMObserver();
}
}
// 启动控制器
new ClickController();
})();