您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
移除讨厌鬼的帖子
当前为
// ==UserScript== // @name remove the posts which make you sick // @author burningall // @description 移除讨厌鬼的帖子 // @version 2015.8.16 // @include *tieba.baidu.com/p/* // @include *tieba.baidu.com/* // @include *tieba.baidu.com/f?* // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_listValues // @grant GM_deleteValue // @run-at document-start // @compatible chrome 推荐 // @compatible firefox 不再继续兼容火狐渣 // @license The MIT License (MIT); http://opensource.org/licenses/MIT // @supportURL http://www.burningall.com // @contributionURL [email protected]|alipay.com // @namespace https://gf.qytechs.cn/zh-CN/users/3400-axetroy // ==/UserScript== // /* 不再继续兼容火狐渣,受不了了。 外观极丑臃肿,还得自定义css,美其名曰叫DIY,SimpleWhite主题+Yosemite样式都拯救不了他的外观。 最符合W3C标准,然而又有很多特立独行的特性,其叫丰富的API。 自由、安全、随心,低内存占用。殊不知几个扩展分分钟卡死。“哎呀,浏览器崩溃了【报告给Mozila】”,至于快速一说,更是无稽之谈。 还有喜闻乐见的flash~~~~!,没用过firefox的,根本不知道什么叫flash崩溃。 不但如此,页面渲染和表现力简直烂到爆,说实话,IE11都比不上。 还有流氓行径,卸载不干净,美其名曰叫用户体验,用户下次安装的时候,那些扩展,书签等,就不用再同步了。 …………………………………… 忍无可忍,卸载了~~! */ (function(window,document){ //==============默认配置============== var defaultdConfig = { 'blockWay': '遮罩屏蔽', //遮罩屏蔽或删除节点 'color': '#ffffff', //遮罩颜色 'opacity': '0.8', //遮罩透明度 'blurpx': '3', //高斯模糊大小 }; //==============TQuery================= function $(tArg){ return new TQuery(tArg); } function TQuery(tArg){ this.arg = tArg;//保存传进来的参数 this.elements = [];//用来保存选择的元素 this.doc = document; switch( typeof tArg ){ case "undefined" : return this; case "function" : addEvent(window,'load',tArg); break; case "string" : var aElems = this.doc.querySelectorAll(tArg); for(var i=0;i<aElems.length;i++){ this.elements.push(aElems[i]); } break; case "object" : //对象 this.elements.push(tArg); break; } this.length = this.elements.length; } TQuery.prototype.find = function(str){ var childElements = [];//存放临时数据 for(var i=0;i<this.length;i++){ var aElems = this.elements[i].querySelectorAll(str); var length = aElems.length; var j =0; while(j<length){ childElements.push( aElems[j] ); j++; } } this.elements = childElements; this.length = childElements.length;//返回新的长度 return this; }; TQuery.prototype.click = function(fn){ var length = this.elements.length; for(var i=0;i<length;i++){ addEvent(this.elements[i],'click',fn); } return this;//返回对象,进行链式操作 }; TQuery.prototype.bind = function(type,fn){ if(arguments.length==1){//如果只传一个json参数e for(var k=0;k<this.length;k++){ for(var attr in type){ addEvent(this.elements[k],attr,type[attr]); } } }else{//如果传两个参数,则统一执行一个e var events = type.split(' '); var eventsLength = events.length; for(var i=0;i<this.length;i++){ var j=0; while(j<eventsLength){ addEvent(this.elements[i],events[j],fn); j++; } } } return this;//返回对象,进行链式操作 }; TQuery.prototype.on = function(type,fn){ if(arguments.length==1){//如果只传一个json参数 for(var k=0;k<this.length;k++){ for(var attr in type){ this.elements[k][ 'on'+attr ] = type[attr]; } } }else{//如果传两个参数e,fn var events = type.split(' ');//获取每个事件 var eventsLength = events.length; for(var i=0;i<this.length;i++){ var j =0; while(j<eventsLength){ this.elements[i][ 'on'+events[j] ] = fn; j++; } } } return this;//返回对象,进行链式操作 }; TQuery.prototype.toggle = function(){ var _arguments = arguments; var length = _arguments.length; var count = 0; for(var i=0;i<this.length;i++){ var _this = this.elements[i]; this.on('click',function(){ _arguments[count++%length].call(_this);//执行 ,解决this错误的问题 }); } return this;//返回对象,进行链式操作 }; TQuery.prototype.each = function(fn){ for(var i=0;i<this.length;i++){ var _this = this.elements[i]; fn.call(_this); } return this; }; TQuery.prototype.css = function(attr,value){ var type = /^(width|left|top|bottom|right|line-height|font-size)+/ig; var type2 = /^(height|margin|padding)+/ig; var type3 = /\d+(px)/ig; var type4 = /\:/ig; if(arguments.length==2){//设置单个样式 if( type.test(attr) && value.indexOf('%')<0 ){ value = parseFloat(value).toFixed(2) + 'px'; } for(var m=0;m<this.length;m++){ this.elements[m].style[attr] = value; } }else{//一个参数 if(typeof attr=="string"){//获取样式 if( type4.test(attr) ){//如果一长串字符串设置,background:#303030;font-size:20px; for(var x=0;x<this.length;x++){ this.elements[x].style.cssText = attr; } }else{ return this.elements[0].currentStyle ? this.elements[0].currentStyle[attr] : getComputedStyle(this.elements[0])[attr]; } }else if( typeof(attr) == "object" && Object.prototype.toString.call(attr).toLowerCase() == "[object object]" && !attr.length ){//json //json设置样式 var css = ""; for(var i =0;i<this.length;i++){ //纯CSS写法 for(var k in attr){ //k == 属性名字,width,height,opacity等 //attr[k] == 属性值,300px,#303030等 if((type.test(k) || type2.test(k)) && attr[k].indexOf('%')<0 ){//如果是带像素的属性,并且没有%符号 attr[k] = parseFloat( attr[k] ).toFixed(2) + 'px'; } css += k+":"+attr[k]+";"; } this.elements[i].style.cssText = css; } } } return this;//返回对象,进行链式操作 }; TQuery.prototype.style = function(attr){ //IE下,如果宽高设置为百分比,则返回也是百分比。 return this.elements[0].currentStyle ? this.elements[0].currentStyle[attr] : getComputedStyle(this.elements[0])[attr]; }; TQuery.prototype.size = function(attr){ return this.doc.documentElement[attr] ? this.doc.documentElement[attr] : this.doc.body[attr]; }; TQuery.prototype.animate = function(json,configjson){ //如果两个参数.animate('width','300'); for(var i=0;i<this.length;i++){ var _this = this.elements[i]; clearInterval(_this.animate); _this.animate = setInterval(function() { //注意,此处this指的是window(匿名函数) var bStop = true;//判断运动是否停止 for(var attr in json){//attr代表属性,'width','height'.而json[attr]代表数值 // 1. 取得当前的值(可以是width,height,opacity等的值) var objAttr = 0 ; if(attr == 'opacity'){//获取当前数值 objAttr = Math.round(parseFloat( $(_this).style(attr) ) * 100); }else{ objAttr = parseInt( $(_this).style(attr) ); } // 2.计算运动速度 var jsonattr = parseFloat( json[attr] ); var speedConfig = (configjson && typeof ( configjson.speed ) != 'undefined') ? configjson.speed : 10; var iSpeed = (jsonattr - objAttr) / speedConfig; //(目标数值-当前数值)/10 iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); //如果速度>0,则速度向上取整,如果小于0,则保留小数 // 3. 检测所有运动是否到达目标 //objAttr,当前点,json[attr]为目标点 if ( (iSpeed>0 && objAttr <= jsonattr) || (iSpeed<0 && objAttr >= jsonattr) ) {//如果有其中一项没有达到目标 bStop = false; } if (attr == "opacity") { _this.style.filter = 'alpha(opacity:' + (objAttr + iSpeed) + ')'; _this.style.opacity = (objAttr + iSpeed) / 100; } else { _this.style[attr] = objAttr + iSpeed + 'px'; //赋值开始运动 } if( configjson && typeof configjson.load !='undefined' ){ configjson.load.call(_this); } if (bStop) { // 表示所有运动都到达目标值 clearInterval(_this.animate); if( configjson && typeof configjson.end != 'undefined' ){ configjson.end.call(_this); } } }//for },30); }//for return this;//返回对象,进行链式操作 }; TQuery.prototype.attr = function(attr,value){ //attr不能是数字 if(arguments.length==2){//2个参数,设置属性 for(var k=0;k<this.length;k++){ if(this.elements[k][attr]){ this.elements[k][attr] = value; }else{ this.elements[k].setAttribute(attr,value); } } }else if(arguments.length==1){//1个参数 if( typeof(attr) == "object" && Object.prototype.toString.call(attr).toLowerCase() == "[object object]" && !attr.length ){//如果是json,则分别设置属性 for(var i=0;i<this.length;i++){ for(var j in attr){ if( this.elements[i][j] ){//如果属性是可以直接读取 this.elements[i][j] = attr[j]; }else{//如果是自定义属性 this.elements[i].setAttribute(j,attr[j]); } } } }else{//读取属性 return this.elements[0][attr] || this.elements[0].getAttribute(attr); } } return this;//返回对象,进行链式操作 }; TQuery.prototype.value = function(setting){ if(setting){//设置 for(var i=0;i<this.length;i++){ this.elements[i].value = setting; } return this; } //读取 return this.elements[0].value; }; TQuery.prototype.html = function(setting){ if(setting){//设置 for(var i=0;i<this.length;i++){ this.elements[i].innerHTML = setting; } return this; } return this.elements[0].innerHTML; }; TQuery.prototype.text = function(setting){ if(setting){//设置 for(var i=0;i<this.length;i++){ this.elements[i].innerText = this.elements[i].textContent = setting; } return this; } //读取 return this.elements[0].innerText || this.elements[0].textContent; }; TQuery.prototype.remove = function(){ for(var i=0;i<this.length;i++){ this.elements[i].remove(); } return this;//返回对象,进行链式操作 }; TQuery.prototype.eq = function(n){ var m = n || 0; this.length = 1; return $(this.elements[m]);//作为对象存进this.elements,以便链式结构 }; TQuery.prototype.get = function(n){ n = n || 0; if(n=='all' && this.length>1){//如果没有参数,并且多个,则返回数组 return this.elements; } return this.elements[n]; }; TQuery.prototype.extend = function(name,fn){ TQuery.prototype[name] = fn; return this;//返回对象,进行链式操作 }; TQuery.prototype.constructor = TQuery; //==============公共函数================= function addEvent(obj, type, fn){ return obj.addEventListener ? obj.addEventListener(type, function(e){ var ev = window.event ? window.event : (e ? e : null); ev.target = ev.target || ev.srcElement; if( fn.call(obj,ev)===false ){//回掉函数为false,则阻止默认时间 e.cancelBubble = true;//阻止冒泡 e.preventDefault();//chrome,firefox下阻止默认事件 } }, false) : obj.attachEvent('on' + type, function(e){ //fn.call(obj,e);//解决IE8下,this是window的问题 var ev = window.event ? window.event : (e ? e : null); ev.target = ev.target || ev.srcElement; if(fn.call(obj,ev)===false ){ e.cancelBubble = true;//阻止冒泡 return false;//阻止默认事件,针对IE8 } }); } function hasClass(obj, cName) { // ( \\s|^ ) 判断前面是否有空格 (\\s | $ )判断后面是否有空格 两个感叹号为转换为布尔值 以方便做判断 return !!obj.className.match(new RegExp("(\\s|^)" + cName + "(\\s|$)")); } //==============主要函数================= function position(){ var url = location.href, postIn = /.*tieba.baidu.com\/p\/.*/ig, postList = /.*tieba.baidu.com\/(f\?.*|[^p])/ig; if (postIn.test(url)) { //如果是帖子内 return "post";//1 } else if (postList.test(url)) { //如果在帖子列表 return "list";//0 } } function barName() { var $name = $(".card_title_fname").text(), newText = $name.replace(/\s*/ig,''); return newText; } function blockMod() { if (GM_getValue('setting-blockWay', defaultdConfig.blockWay) == '遮罩屏蔽') { return "wrap"; //遮罩模式,1 } else { return "remove"; //删除节点,2 } } function createList() { $('#showList').html(" "); //先清空,后生成 var li = '', json = null, length = GM_listValues().length, key, value; for (var i = 0; i < length; i++) { key = GM_listValues()[i]; value = GM_getValue(GM_listValues()[i], ''); if (value.length < 10 || value === true || value === false) continue; json = JSON.parse(value); li +='<tr data-value=' + value + '>'+ '<td style="min-width:100px">' + json.name + '</td>'+ '<td style="min-width:100px">' + json.id + '</td>'+ '<td style="min-width:75px">' + json.bar + '</td>'+ '<td style="min-width:75px">' + json.reson + '</td>'+ '<td style="min-width:50px"><input type="button" class="deletThis" value="删除"/></td>'+ '</tr>'; } //for $('#showList').html(li); } function searchInList() { var str = '', userInfo = "", userInfoStr = "", list = document.querySelectorAll('#showList tr'), listLength = list.length, inputValue = $('#sear').value(); createList(); $("#showList").html(" "); for (var i = 0; i < listLength; i++) { userInfo = JSON.parse($(list[i]).attr('data-value')); if (userInfo.name.indexOf(inputValue) >= 0 || userInfo.id.indexOf(inputValue) >= 0 || userInfo.bar.indexOf(inputValue) >= 0 || userInfo.reson.indexOf(inputValue) >= 0) { //匹配name,id,bar,reson userInfoStr = JSON.stringify(userInfo); str += '<tr data-value=' + userInfoStr + '>'+ '<td style="width:100px">' + userInfo.name + '</td>'+ '<td style="width:100px">' + userInfo.id + '</td>'+ '<td style="width:75px">' + userInfo.bar + '</td>'+ '<td style="width:75px">' + userInfo.reson + '</td>'+ '<td style="width:50px"><input type="button" class="deletThis" value="删除"/></td>'+ '</tr>'; } } //for $("#showList").html(str); } //将脚本还原到最初状态 function clearall(){ var length = GM_listValues().length; for(var i=0;i<length;i++){ console.log(GM_deleteValue(GM_listValues()[i]) + ":" + GM_getValue(GM_listValues()[i], '')); } GM_setValue('setting-blockWay', defaultdConfig.blockWay); //屏蔽方式 GM_setValue('setting-col', defaultdConfig.color); //默认遮罩的颜色 GM_setValue('setting-opa', defaultdConfig.opacity); //默认遮罩透明度 GM_setValue('setting-gus', defaultdConfig.blurpx); //默认遮罩下的高斯模糊半径 } //==============主要对象================= function init(){ return new Init(); } function Init(){ var user,userName,userId,pos,temp,lzl,selector; this.user = [];//用于储存所有用户信息,包括name,id // this.userLzl = [];//用于储存所有用户信息,包括name,id selector = position()=="post" ? '#j_p_postlist>div[data-field]' : '#thread_list>li[data-field]'; this.list = document.querySelectorAll(selector);//所有用户所占的DIV,LI // this.listLzl = document.querySelectorAll('.j_lzl_m_w>li[data-field]:not(.lzl_li_pager)'); // pos = position()=="post" ? document.querySelectorAll('.l_post .d_name') : document.querySelectorAll('#thread_list>li[data-field] .threadlist_lz>.threadlist_author');//点击屏蔽,屏蔽按钮需要插入的位置 var listLength = this.list.length; for(var i=0;i<listLength;i++){ userName = position()=="post" ? JSON.parse(this.list[i].getAttribute('data-field')).author.user_name : JSON.parse(this.list[i].getAttribute('data-field')).author_name; userId = position()=="post" ? JSON.parse(this.list[i].getAttribute('data-field')).author.user_id : JSON.parse(this.list[i].getAttribute('data-field')).id; temp = {}; temp.name = userName; temp.id = userId; this.user.push(temp); } //楼中楼 // var listLzlLength = this.listLzl.length; // console.log( listLzlLength ); // for(var j=0;j<listLzlLength;j++){ // var lzlName = JSON.parse( this.listLzl[j].getAttribute("data-field").replace(/\'/ig,'\"') ).user_name; // var lzlId = ""; // temp = {}; // temp.name = lzlName; // temp.id = lzlId; // // console.log( lzlName ); // // console.log( j ); // this.userLzl.push(temp); // } return this; } //页面加载开始屏蔽 Init.prototype.block = function(){ this.oMar = document.createElement("div");//创建遮罩层 var obj,objLzl,data,oMarClone, listLength = GM_listValues().length, userLength = this.user.length, // userLzlLength = this.userLzl.length, config = { "blockWay": GM_getValue('setting-blockWay', defaultdConfig.blockWay),//屏蔽方式 "color": GM_getValue('setting-col', defaultdConfig.color),//遮罩颜色 "opacity": GM_getValue('setting-opa', defaultdConfig.opacity),//遮罩透明度 "blur": GM_getValue('setting-gus', defaultdConfig.blurpx)//高斯模糊 }; $(this.oMar).attr("class","mar").css({ "background":config.color, "opacity":config.opacity }); for (var i = 0; i < listLength; i++) {//GM_listValues().length for(var j=0;j<userLength;j++){ obj = this.list[j];//要屏蔽的模块 if( GM_listValues()[i]==this.user[j].name ){ if(blockMod()=="remove"){ $(obj).css("display","none"); }else if(blockMod()=="wrap"){ if( $(obj).find(".mar").length >= 1 ){ continue; } oMarClone = this.oMar.cloneNode(true);//克隆遮罩层 //要屏蔽的模块 $(obj).css({ "position":"relative", "filter":"blur(" + config.blur +"px)", "-webkit-filter":"blur(" + config.blur +"px)", "-moz-filter":"blur(" + config.blur +"px)", "-o-filter":"blur(" + config.blur +"px)", "-ms-filter":"blur(" + config.blur +"px)", "backface-visibility":"hidden", "-webkit-backface-visibility":"hidden", "-moz-backface-visibility":"hidden", "-o-backface-visibility":"hidden", "-ms-backface-visibility":"hidden", }); if (GM_listValues()[i] == this.user[j].name) { data = GM_getValue(GM_listValues()[i], ''); } $(oMarClone).attr("data",data); obj.appendChild(oMarClone); } } } //屏蔽楼中楼 // for(var k=0;k<userLzlLength;k++){ // objLzl = this.listLzl[k];//要屏蔽的模块 // if( GM_listValues()[i]==this.userLzl[k].name ){//如果匹配到 // if(blockMod()=="remove"){ // objLzl.style.display = "none"; // }else if(blockMod()=="wrap"){ // if( objLzl.querySelectorAll('.mar').length >= 1 ){ // continue; // } // oMarClone = oMar.cloneNode(true);//克隆遮罩层 // //要屏蔽的模块 // objLzl.style.cssText = "position:relative;filter:blur(" + config.blur +"px);-webkit-filter:blur(" + config.blur + "px);-moz-filter:blur(" + config.blur + "px);-o-filter:blur(" + config.blur + "px);backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;"; // if (GM_listValues()[i] == this.userLzl[k].name) { // data = GM_getValue(GM_listValues()[i], ''); // } // oMarClone.setAttribute('data', data); // objLzl.appendChild(oMarClone); // } // } // } } //for,遍历屏蔽 }; //智能提示 Init.prototype.autoTips = function(){ var list = [],//储存所有用户名 temp = {}, str = ""; for(var i=0;i<this.user.length;i++){ if(typeof temp[this.user[i].name]=="undefined"){ temp[this.user[i].name] = 1; list.push(this.user[i].name); } } for(var j=0;j<list.length;j++){ str += '<option value="' + list[j] + '" />'; } $("#lst").html(str); }; //关键字过滤 var log = []; function key(){ return new keyWord(); } function keyWord(){ //已保存的关键字 this.wordArr = GM_getValue("keyWord",[]); if( this.wordArr.length<=0 || $('a.j_th_tit').length<=0 ){ return this; } var str = this.wordArr.join("|"); //正则匹配 this.reg = new RegExp(""+ str +"","i"); //所有帖子标题 this.list = $('a.j_th_tit').get("all"); document.querySelectorAll('a.j_th_tit'); } keyWord.prototype.filter = function(){ log = []; var list = this.list || [], postTitle, target; var reg = new RegExp(""+ this.wordArr.join("|") +"","i"); for(var i=0;i<list.length;i++){ //帖子标题 postTitle = $(list[i]).text(); //帖子块 target = list[i].parentNode.parentNode.parentNode.parentNode.parentNode; console.log( target ); if( reg.test(postTitle)===true ){ log.push( postTitle ); target.style.display = "none"; }else{ target.style.display = "block"; } } }; keyWord.prototype.createTag = function(){ //生成标签 var oFragment = document.createDocumentFragment(), tag = document.createElement('span'), cloneTag; tag.className = "blockTag"; for(var k=0;k<this.wordArr.length;k++){ cloneTag = tag.cloneNode(); $(cloneTag).html( this.wordArr[k] ); oFragment.appendChild(cloneTag); } $('#tag-area').html(" ").get(0).appendChild(oFragment); }; //监听 $().extend("ob",function(){ var target = this.elements[0]; return new Ob(target); }); function Ob(target){ this.MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; this.target = target; return this; } Ob.prototype.observer = function(config,fn){ var MutationObserver = this.MutationObserver, observer = new MutationObserver(function(mutations){ mutations.forEach(function(mutation) { fn.call(this.target); }); }); observer.observe(this.target, config); }; //拖拽 $().extend("drag",function(pressTarget,MoveTarget,json){ return new Drag(pressTarget,MoveTarget,json); }); function Drag(pressTarget,MoveTarget,json){ var _this = this; this.disX = 0; this.disY = 0; if(json){ this.json = json; } this.MoveTarget = MoveTarget; pressTarget.onmousedown = function(e){ _this.fnDown(e); return false;//chrome,firefox去除文字选中 }; } Drag.prototype.fnDown = function(e){//鼠标按下(未松开) var ev = e || window.event; var _this = this; this.disX = e.clientX - this.MoveTarget.offsetLeft; this.disY = e.clientY - this.MoveTarget.offsetTop; if(this.MoveTarget.setCaptrue){//IE,解决文字选中 this.MoveTarget.onmousemove = function(ev){ _this.fnMove(ev); }; this.MoveTarget.onmouseup = function(){ var this_ = this; _this.fnUp(this_); }; this.MoveTarget.setCaptrue();//添加事件捕获 }else{ document.onmousemove = function(e){ _this.fnMove(e); }; document.onmouseup = function(){ var this_ = this; _this.fnUp(this_); }; } }; Drag.prototype.fnMove = function(e){//鼠标移动,则div移动 var ev = e || window.event; var L = this.json ? this.range(e.clientX - this.disX,this.json.L[0],this.json.L[1]) : (e.clientX - this.disX); var T = this.json ? this.range(e.clientY - this.disY,this.json.T[0],this.json.T[1]) : (e.clientY - this.disY); this.MoveTarget.style.left = L + 'px'; this.MoveTarget.style.top = T + 'px'; }; Drag.prototype.fnUp = function(this_){//鼠标松开,则停止 this_.onmousemove = null; this_.onmouseup = null; if( this_.setCaptrue ){ this_.releaseCapture();//释放捕获 } }; Drag.prototype.range = function(iNow,iMin,iMax){ if(iNow>iMax){ return iMax; }else if(iNow<iMin){ return iMin; }else{ return iNow; } }; //==============主要事件================= $(window).bind({ "DOMContentLoaded":function(){ //脚本初始化 init().block(); //关键字过滤 key().filter(); }, "load":function(){ init().block(); //监听翻页 if(position()=="post" ){ $("#j_p_postlist").ob().observer({"childList":true},function(){ init().block(); }); }else{ $('thread_list').ob().observer({"childList":true},function(){//帖子列表 init().block(); }); } //关键字过滤 key().filter(); } }); $(document).bind('click',function(e){ var target = e.target || e.srcElement, id=target.id || null; //如果点击到ID if ($(target).attr('data-field') && hasClass(target.parentNode, 'd_name') || $(target).attr('data-field') && hasClass(target.parentNode, 'tb_icon_author')) { //如果点到了名字上面 (function(target){ var data3,name,id,parent; if( $("#confirmBox") ){ $("#confirmBox").remove(); } if(hasClass(target.parentNode,"d_name")){ parent = target.parentNode.parentNode.parentNode.parentNode; data3 = JSON.parse($(parent).attr("data-field")).author; name = data3.user_name; id = data3.user_id; }else{ parent = target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode; data3 = JSON.parse($(parent).attr("data-field")); name = data3.author_name; id = data3.id; } var confirmBox = document.createElement("div"); $(confirmBox).attr("id","confirmBox").html("<p>是否屏蔽</p><p>" + name + "</p><input type='button' value='确认' id='confirm-yes' /><input type='button' value='取消' id='confirm-no' />"); document.documentElement.appendChild(confirmBox); $(confirmBox).animate({"top":"100","opacity":"100"},{"end":function(){ clearTimeout(confirmBox.fadeOut); this.fadeOut=setTimeout(function(){ $(confirmBox).animate({"top":"60","opacity":"0"},{"end":function(){ $(this).remove(); }}); },3000); }}); $('#confirm-yes').on('click',function(){ GM_setValue(name,'{"name":"' + name + '","id":"' + id + '","bar":"' + barName() + '","reson":"不顺眼"}'); init().block(); confirmBox.remove(this); }); $("#confirm-no").on('click',function(){ confirmBox.remove(this); }); })(target); //阻止默认事件和冒泡 return false; } //屏蔽列表删除键 else if( hasClass(target,"deletThis") ){ var ele = $(target.parentNode.parentNode); var thisKey = JSON.parse(ele.attr('data-value')).name; //获取当前结点的key GM_deleteValue(thisKey); //删除变量 ele.remove(); //删除节点 } //如果点击到遮罩层 else if (hasClass(target, 'mar')){ $(".mar").html(" "); //获取data数据 var data = JSON.parse($(target).attr('data')); //第一次点击 if (!target.ready) { $(target).css({ "border-left":"5px solid rgb(174, 103, 34)" }); target.ready = true; } //再次点击 else if(target.ready === true){ $(target.parentNode).css({ "position":"relative", "-webkit-filter":"none", "-moz-filter":"none", "o-filter":"none", "ms-filter":"none", "filter":"none" }); $(target).css({ "background":"none", "opacity":"1", "filter":"alpha(opacity=100)" }).html('<input type="button" id="keeplock" value="继续屏蔽" /><input type="button" id="unlockNow" value="暂时解除 "/><input type="button" id="unlock" value="永久解除" />' + '<p>' + data.name + '(' + data.id + '),其在' + data.bar + '因[' + data.reson + ']被屏蔽' + '</p>'); target.ready = null; } } //点击屏蔽关键字删除 else if( hasClass(target, 'blockTag') ){ var word = $(target).text(); var arr = GM_getValue("keyWord",[]); var temp = []; for(var i=0;i<arr.length;i++){ if(arr[i]!=word){ temp.push( arr[i] ); } } GM_setValue("keyWord",temp); $(target).remove(); //重新屏蔽 // keyfilter(); key().filter(); return false; } else{ switch(id){ //解除屏蔽 case "unlock" : var $ele1 = $(target.parentNode); var data2 = JSON.parse( $ele1.attr("data") ); GM_deleteValue(data2.name); //删除键名 $ele1.remove(); break; //暂时解除 case "unlockNow" : target.parentNode.remove(this); break; //继续屏蔽 case "keeplock" : var targetParent = target.parentNode; var config = { "blockWay": GM_getValue('setting-blockWay', defaultdConfig.blockWay),//屏蔽方式 "color": GM_getValue('setting-col', defaultdConfig.color),//遮罩颜色 "opacity": GM_getValue('setting-opa', defaultdConfig.opacity),//遮罩透明度 "blur": GM_getValue('setting-gus', defaultdConfig.blurpx)//高斯模糊 }; $(targetParent.parentNode).css({ "position":"relative", "filter":"blur(" + config.blur +"px)", "-webkit-filter":"blur(" + config.blur + "px)", "-moz-filter":"blur(" + config.blur + "px)", "-o-filter":"blur(" + config.blur + "px)", "-ms-filter":"blur(" + config.blur + "px)", "backface-visibility":"hidden", "-webkit-backface-visibility":"hidden", "-moz-backface-visibility":"hidden", "-o-backface-visibility":"hidden", "-ms-backface-visibility":"hidden" }); $(targetParent).css({ "opacity":config.opacity, "background":config.color, "border":"none" }).html(" "); break; //退出 case "queit" : $('#pannal,#wrap').remove(); document.body.className = ''; break; case "wrap" : $('#pannal,#wrap').remove(); document.body.className = ''; break; //保存 case "save" : //判断屏蔽方式 GM_setValue('setting-blockWay', $("#blockWay").value() ); //遮罩颜色 GM_setValue('setting-col', $("#col").value() ); //遮罩透明度1 GM_setValue('setting-opa', $('#opa').value() ); //高斯模糊半径 GM_setValue('setting-gus', $('#gus').value()); //添加黑名单 var name = $('#userName').value(); if(name === "" || name === null){ return; } GM_setValue($('#userName').value(), '{"name":"' + $('#userName').value() + '","id":"' + $("#userId").value() + '","bar":"' + $("#curBar").value() + '","reson":"' + $("#reson").value() + '"}'); init().block(); createList();//重新生成列表 break; //初始化 case "clear" : clearall(); createList(); break; //添加关键字 case "addWord": var input = $("#blockWord").value(); if(input===""){ return; } var keyArr = GM_getValue("keyWord",[]); keyArr.push(input); var a = {}; var newTemp = []; for(var f=0;f<keyArr.length;f++){ if(typeof (a[ keyArr[f] ]) == "undefined" ){ a[ keyArr[f] ] = 1; newTemp.push( keyArr[f] ); } } GM_setValue("keyWord",newTemp); //生成标签 key().createTag(); //过滤 key().filter(); break; //显示日志 case "showLog": var str = ""; for(var x=0;x<log.length;x++){ str += "<p>" + log[x] + "</p>"; } $("#tag-log").html(str); break; default: return; } } }); $(document).bind('input',function(e){ var target = e.target || e.srcElement, id = target.id; switch(id){ case "sear" : searchInList(); break; case "opa" : $('#opa-text').html( $('#opa').value() ); break; case "gus" : $('#gus-text').html( $('#gus').value() ); break; case "userName" : if( $("#lst").html() === "" || $("#lst").html() === null ){ init().autoTips(); } break; default : return; } }); $(window).bind('keyup',function(e){ var target = e.target || e.srcElement; if(e.keyCode==8){//backspace if ( target.id=="sear" && target.value === '') { createList(); return; } }else if(e.ctrlKey && e.keyCode == 114){//快捷键ctrl+F3 if( $("#pannal").length>=1 ){ return; } var oFragment = document.createDocumentFragment(),//创建文档碎片 pannal = document.createElement('div'),//控制面板 pannal_wrap = pannal.cloneNode(false),//遮罩层 config = { "blockWay": GM_getValue('setting-blockWay', defaultdConfig.blockWay),//屏蔽方式 "color": GM_getValue('setting-col', defaultdConfig.color),//遮罩颜色 "opacity": GM_getValue('setting-opa', defaultdConfig.opacity),//遮罩透明度 "blur": GM_getValue('setting-gus', defaultdConfig.blurpx)//高斯模糊 }; $(pannal_wrap).attr("id","wrap"); $(pannal).attr("id","pannal"); pannal.innerHTML = '\ <h3 id="pannal-tittle" style="cursor:move;font-size:20px;line-height:20px;color:#fff;background:#165557;">配置参数</h3>\ <div id="pannal-setting">\ 屏蔽方式:<select id="blockWay">\ <option>遮罩屏蔽</option>\ <option>删除节点</option>\ </select><br/>\ 遮罩层颜色:<input id="col" type="color" value="'+config.color+'" /><br/>\ 遮罩透明度(0~1):<span id="opa-text">'+config.opacity+'</span><input id="opa" type="range" value="'+config.opacity+'" min="0" max="1" step="0.1" /><br/>\ 高斯模糊像素(0~10):<span id="gus-text">'+config.blur+'</span><input id="gus" type="range" value="'+config.blur+'" min="0" max="10" step="1" /><br/>\ </div>\ <hr/>\ <h3>添加讨厌鬼</h3>\ <div id="addBlackList">\ 数字ID(选填):<input id="userId" type="text" placeholder="user_id"/><br/>\ 贴吧ID(必填):<input id="userName" type="text" placeholder="user_name" list="lst" autocomplete="off"/><br/>\ <datalist id="lst" autocomplete="on"></datalist>\ 所在贴吧:<input id="curBar" type="text" value="'+barName()+'" /><br/>\ 屏蔽原因:<input id="reson" type="text" list="lstr" value="" />\ </div>\ <hr/>\ <h3>功能</h3>\ <div id="fn">\ <input id="save" type="button" value="保存" />\ <input id="clear" type="button" value="初始化" />\ <input id="view" type="button" value="列表" />\ </div>\ <div id="list" style="margin:0;">\ <input id="sear" type="text" list="BlackList" placeholder="搜索" autocomplete="off" />\ <table id="showList"></table>\ </div>\ <div id="block-keyWord">\ <input type="text" placeholder="输入关键字" id="blockWord" /><input type="button" value="添加" id="addWord" /></br>\ <div id="tag-area"></div>\ <input type="button" value="查看日志" id="showLog" />\ <div id="tag-log"></div>\ </div>\ <span id="queit">X</span>\ '; oFragment.appendChild(pannal); oFragment.appendChild(pannal_wrap); document.body.className = 'blur'; document.documentElement.appendChild(oFragment); //居中 $(pannal).css({ "top": ($().size('clientHeight') - pannal.offsetHeight) / 2 + "px", "left":($().size('clientWidth') - pannal.offsetWidth) / 2 + "px" }); //初始化数据 $('#blockWay').attr('value',GM_getValue('setting-blockWay', defaultdConfig.blockWay) );//屏蔽方式 //生成屏蔽名单列表 createList(); //生成关键字标签 // creatTag(); key().createTag(); //可拖拽 $().drag( $('#pannal-tittle').get(0),pannal ); //展开收起 $('#view').toggle(function(){ var height = parseInt( pannal.offsetHeight ); $('#list').animate({"height":height},{"end":function(){ $(this).css({ "display":"block", "height":height, "overflow":"auto" }); }}); $('#block-keyWord').animate({"height":height},{"end":function(){ $(this).css({ "disable":"block", "height":height, "overflow":"auto" }); }}); },function(){ $('#list').animate({"height":"0"}); $('#block-keyWord').animate({"height":"0"}); }); } }); //==============样式================= var style = '\ body{\ -webkit-backface-visibility:hidden;\ }\ .blur{\ filter:blur(5px) grayscale();\ -webkit-filter:blur(5px) grayscale();\ -moz-filter:blur(5px) grayscale();\ -o-filter:blur(5px) grayscale();\ -ms-filter:blur(5px) grayscale();\ }\ #pannal{\ width:200px;\ height:auto;\ background:rgba(38, 50, 56, 1);\ color:#fff;\ position:fixed;\ z-index:1000000000;\ text-align:center;\ box-shadow:0 0 20px 5px #000000;\ }\ #pannal>div{\ margin:10px 0;\ }\ #pannal input{\ color:#3e3e3e;\ border:1px solid transparent;\ height:20px;\ line-height:20px;\ }\ #pannal input:focus{\ background-color:rgba(38, 50, 56, 1);\ color:#fff;\ border:1px solid;\ transition:all 0.2s ease-in-out;\ }\ #pannal h3{\ color:rgb(0, 255, 226);\ }\ #pannal-setting input[type=range]{\ width:80%;\ }\ #fn input{\ padding:5px 10px;\ margin:0 5px;\ cursor:pointer;\ }\ #fn input:hover{\ background:#004d40;\ color:#fff;\ }\ #pannal>span#queit{\ position:absolute;\ width:21px;\ height:21px;\ line-height:21px;\ font-size:21px;\ top:0;\ right:0;\ cursor:pointer;\ opacity:0.8;\ background:#fff;\ color:#303030;\ }\ #blockWay{\ color:#3e3e3e;\ border:none;\ }\ #wrap{\ position:fixed;\ width:100%;\ height:100%;\ background:rgba(155, 155, 155,0.5);\ top:0;\ left:0;\ z-index:999999999;\ }\ .mar{\ width:100%;\ height:100%;\ position:absolute;\ top:0;\ left:0;\ z-index:999999998;\ -webkit-backface-visibility:hidden;\ text-align:center;\ font-size:16px;\ }\ .mar input{\ background:#303030;\ color:#fff;\ padding:5px 10px;\ margin:5px 10px;\ font-family:"宋体";\ font-size:14px;\ border:none;\ }\ .mar input:hover{\ background:#004d40;\ transition:all 0.2s ease-in-out;\ }\ .mar p{\ color:##2B2929;\ font-weight:bold;\ background-color:rgba(72, 70, 70, 0.35);\ line-height:30px;\ width:60%;\ margin:0 auto;\ }\ .mar p:hover{\ color:#fff;\ background-color:#004d40;\ transition:all 0.2s ease-in-out;\ }\ #list{\ position:absolute;\ top:0;\ left:200px;\ width:400px;\ height:0;\ overflow:hidden;\ background:inherit;\ margin:0;\ }\ #list tr:hover{\ background:#004d40;\ transition:all 0.2s ease-in-out;\ }\ .key{\ float:left;\ clear:both;\ margin-left:10px;\ width:120px;\ text-align:left;\ overflow:hidden;\ text-overflow:ellipsis;\ white-space:nowrap;\ }\ .col{\ border:none;\ }\ .deletThis{\ float:right;\ cursor:pointer;\ margin-right:10px;\ padding:0 5px;\ border:0;\ height:18px;\ }\ .disable-btn{\ background:#6B6B6B;\ cursor:not-allowed;\ }\ #addBlackList input{\ width:80%;\ }\ /*userName列表*/\ #thread_list>li[data-field] .threadlist_lz>.threadlist_author:hover,.l_post .d_name:hover{\ background:#004d40;\ transition:all 0.2s ease-in-out;\ }\ #sear{\ position:relative;\ margin:0 auto;\ text-align:center;\ height:21px;\ width:100%;\ border:none;\ }\ #confirmBox{\ width:300px;\ background:rgba(5, 49, 43, 0.8);\ position:fixed;\ left:50%;\ top:60px;\ margin-left:-150px;\ text-align:center;\ z-index:999999;\ opacity:0;\ box-shadow:1px 1px 10px 2px #000000;\ }\ #confirmBox input{\ border:none;\ padding:10px 30px;\ margin:10px;\ cursor:pointer;\ }\ #confirmBox input:hover{\ background:#004d40;\ transition:all 0.2s ease-in-out;\ }\ #confirmBox p{\ font-size:18px;\ color:#fff;\ margin-top:20px;\ }\ #block-keyWord{\ position:absolute;\ top:0;\ right:100%;\ width:200px;\ height:0;\ margin:0 !important;\ padding:0;\ background-color:inherit;\ overflow:auto;\ }\ span.blockTag{\ padding:5px 10px;\ display:inline-block;\ border:1px solid;\ border-radius:5px;\ position:relative;\ margin:2px 5px;\ }\ span.blockTag:hover{\ background:#08454A;\ }\ #blockWord{\ margin:10px 0;\ }\ #addWord{\ padding:0 5px !important;\ background-color:transparent !important;\ border:1px solid #fff !important;\ color:#fff !important;\ }\ #addWord:hover{\ background-color:rgb(1, 84, 68) !important;\ }\ #tag-log>p{\ margin:10px 0;\ text-align:left;\ text-indent:2em;\ line-height:2em;\ }\ #tag-log>p:hover{\ background:#004d40;\ transition:all 0.2s ease-in-out;\ }\ '; GM_addStyle(style); })(window,document);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址