效果图(鼠标移动到用户名上即可):
没事写的,只是好奇哪些号无了,脚本代码:
// ==UserScript==
// @name B站已注销账号检测存档
// @namespace http://tampermonkey.net/
// @version 0.3
// @description B站已注销账号存档查看,在已关注列表里搜“注销”即可查看你关注人哪些账号已注销,用于查看哪些人账号注销了,鼠标移动到“账号已注销”文字上即可
// @author You
// @match *://*.bilibili.com/*
// @icon https://www.bilibili.com/favicon.ico
// @grant none
// ==/UserScript==
(function() {
'use strict';
let tooltip = null;
let bufferArea = 50; // 鼠标允许移动的缓冲范围(像素)
function createTooltip(uid, x, y) {
if (tooltip) tooltip.remove();
// 创建提示框
tooltip = document.createElement('div');
Object.assign(tooltip.style, {
position: 'fixed',
background: '#fff',
border: '1px solid #ccc',
padding: '8px',
borderRadius: '4px',
boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
zIndex: '999999',
left: `${x}px`,
top: `${y}px`
});
// 内容链接
const link = `https://www.biliplus.com/api/do.php?act=search&o=pubdate&n=30&p=1&source=biliplus&word=%40m%3D${uid}`;
tooltip.innerHTML = `<a href="${link}" target="_blank" style="color: #00a1d6; text-decoration: none;">查看历史投稿 (BiliPlus)</a>`;
document.body.appendChild(tooltip);
// 绑定新的鼠标追踪
document.addEventListener('mousemove', trackMouseMovement);
return tooltip;
}
// 鼠标移动追踪
function trackMouseMovement(e) {
if (!tooltip) return;
// 计算有效区域
const rect = tooltip.getBoundingClientRect();
const safeArea = {
left: rect.left - bufferArea,
right: rect.right + bufferArea,
top: rect.top - bufferArea,
bottom: rect.bottom + bufferArea
};
// 检测是否超出范围
if (
e.clientX < safeArea.left ||
e.clientX > safeArea.right ||
e.clientY < safeArea.top ||
e.clientY > safeArea.bottom
) {
tooltip.remove();
tooltip = null;
document.removeEventListener('mousemove', trackMouseMovement);
}
}
// 鼠标悬停逻辑
document.addEventListener('mouseover', function(e) {
const target = e.target;
if (target.matches('div.vui_ellipsis.multi-mode') && target.textContent.trim() === '账号已注销') {
const parentLink = target.closest('a.relation-card-info__uname[href*="space.bilibili.com/"]');
if (parentLink) {
const fullUrl = parentLink.href.startsWith('//')
? `https:${parentLink.href}`
: parentLink.href;
const uidMatch = fullUrl.match(/\/\/(?:www\.)?space\.bilibili\.com\/(\d+)/);
if (uidMatch?.[1]) {
// 智能定位(防止超出视口)
const xPos = Math.min(e.pageX, window.innerWidth - 200);
const yPos = Math.min(e.pageY, window.innerHeight - 50);
createTooltip(uidMatch[1], xPos, yPos);
}
}
}
});
// 保留滚动隐藏
window.addEventListener('scroll', () => {
if (tooltip) {
tooltip.remove();
tooltip = null;
}
});
})();