// ==UserScript== // @name Bilibili清空消息记录 // @description 清空回复、艾特记录、消息或私信。不可恢复,慎用! // @namespace https://greasyfork.org/users/197529 // @homepage https://greasyfork.org/scripts/384886 // @supportURL https://greasyfork.org/scripts/384886/feedback // @author kkocdko // @license Unlicense // @version 0.3.6 // @match *://message.bilibili.com/* // @noframes // @downloadURL none // ==/UserScript== 'use strict' const addFloatButton = initFloatButton() addFloatButton('清空回复', () => clickAllEl('.reply-item .bl-button--primary')) addFloatButton('清空艾特记录', () => clickAllEl('.at-item .bl-button--primary')) addFloatButton('清空我的消息', () => clickAllEl('.close-icon')) addFloatButton('清空私信存档', () => clickAllEl('.popup-btn-ctnr>.bl-button--primary')) function clickAllEl (selector, parentNode = document) { parentNode.querySelectorAll(selector).forEach(el => el.click()) } function initFloatButton () { return (document.addFloatButton = document.addFloatButton || (() => { const buttonBarShadow = document.createElement('div').attachShadow({ mode: 'open' }) buttonBarShadow.innerHTML = '' document.body.appendChild(buttonBarShadow.host) return (text, onclick) => { const button = document.createElement('button') button.textContent = text button.addEventListener('click', onclick) return buttonBarShadow.appendChild(button) } })()) }