Greasy Fork is available in English.
去除“成为大会员”链接,将红名替换为原始格式,替换表情为纯文字
当前为
// ==UserScript==
// @name bilibili vip remover
// @name:zh-CN bilibili大会员削除
// @namespace myfreeer
// @version 0.2
// @description remove the 'become-vip' link, repalce red names to original, and replace emoji to pure text
// @description:zh-CN 去除“成为大会员”链接,将红名替换为原始格式,替换表情为纯文字
// @author myfreeer
// @match http://*.bilibili.com/*
// @match http://*.bilibili.com/
// @license MIT
// @grant none
// ==/UserScript==
//code from http://javascript.ruanyifeng.com/dom/mutationobserver.html
(function(win){
'use strict';
var listeners = [];
var doc = win.document;
var MutationObserver = win.MutationObserver || win.WebKitMutationObserver;
var observer;
function ready(selector, fn){
// 储存选择器和回调函数
listeners.push({
selector: selector,
fn: fn
});
if(!observer){
// 监听document变化
observer = new MutationObserver(check);
observer.observe(doc.documentElement, {
childList: true,
subtree: true
});
}
// 检查该节点是否已经在DOM中
check();
}
function check(){
// 检查是否匹配已储存的节点
for(var i = 0; i < listeners.length; i++){
var listener = listeners[i];
// 检查指定节点是否有匹配
var elements = doc.querySelectorAll(listener.selector);
for(var j = 0; j < elements.length; j++){
var element = elements[j];
// 确保回调函数只会对该元素调用一次
if(!element.ready){
element.ready = true;
// 对该节点调用回调函数
listener.fn.call(element, element);
}
}
}
}
// 对外暴露ready
win.ready = ready;
})(this);
//from https://lvwenhan.com/web-front/374.html
function removeClass(obj, cls){
var obj_class = ' '+obj.className+' ';//获取 class 内容, 并在首尾各加一个空格. ex) 'abc bcd' -> ' abc bcd '
obj_class = obj_class.replace(/(\s+)/gi, ' ');//将多余的空字符替换成一个空格. ex) ' abc bcd ' -> ' abc bcd '
var removed = obj_class.replace(' '+cls+' ', ' ');//在原来的 class 替换掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '
removed = removed.replace(/(^\s+)|(\s+$)/g, '');//去掉首尾空格. ex) 'bcd ' -> 'bcd'
obj.className = removed;//替换原来的 class.
}
document.getElementById('i_menu_become_vip').remove();
var vip=document.getElementsByClassName('b-vip-red');
for (var i in vip) removeClass(vip[i], 'b-vip-red');
var vip2=document.getElementsByClassName('b-vip-emoji');
for (var i in vip2) vip2[i].outerHTML=vip2[i].alt;
ready('.b-vip-red', function (e) {
return removeClass(e, 'b-vip-red');
});
ready('.b-vip-emoji', function (e) {
return e.outerHTML = e.alt;
});