清爽的qq空间
// ==UserScript== // @name QQZoneCleaner // @description 清爽的qq空间 // @namespace http://weibo.com/qiangtoutou // @include http://*.qzone.qq.com/* // @grant unsafeWindow // @version 2014-12-01 20:59:41 // ==/UserScript== (function(w){ //默认的需要删除的class数组,可自行添加,删除 var classArr = ['fn_gdtads', 'fn_paipai', 'fn_mayKnow', 'fn_openvip','fn_guanxiquan','fn_fnrecm','fn_birthdayGuy','feed-hot'], idArr = ['div_corner_ad_container','QM_My_App_Container','idQbossHotbar'], filterStr={ content:['收藏音乐','我的空间积分','转载','QQ超市','QQ农场','和QQ好友一起玩游戏','设置背景音乐','添加了应用', '我要把所有的动物','我和好友们都在玩','赶紧送礼物祝他生日快乐吧','赶紧送礼物祝她生日快乐吧','发起的投票','让自己的空间与众不同','我刚刚在QQ空间#到预约码', '#玩得#,靠得住#火箭加速冲,直达广寒宫'], name:['官方Qzone','QQ空间'] }; //v8使用模块加载系统,只能这样加一个检测方法了 //超时检测,在规定时间内轮循f,直到为真则执行cb var check=function(f,cb){ var now=new Date, timeout=8000; var fun= function(){ var ret=f(); if(!ret){ if(new Date-now<timeout){ setTimeout(fun,500); } }else{ cb(); } } fun(); } //v8版 classArr=classArr.concat(['mod-side-nav-recently-used','icenter-right-ad']); idArr=idArr.concat(['QM_Container_100002','QM_Container_100003','QM_Container_333']); //class选择器 var _class = function (name) { var arr= document.getElementsByClassName(name); return Array.prototype.slice.call(arr); } //id选择器 var _id = function (id) { return document.getElementById(id); } var QQZoneCleaner = { //删除指定元素 remove : function (elem) { elem && elem.parentNode && elem.parentNode.removeChild(elem); }, hide : function (elem) { elem && (elem.style.display='none'); }, _getArr:function(){ var i,j,el,arr,cls; arr=[]; //id for (var j = idArr.length; j--; ) { el = _id(idArr[j]); arr.push(el); } //class for (var i = classArr.length; i--; ) { cls=classArr[i]; el=_class(cls); arr=arr.concat(el); } //过滤消息内容 arr=arr.concat(this._fromContent()); //过滤用户 arr=arr.concat(this._fromName()); return arr; }, //内容 _fromContent:function(){ var arr=_class('f_info'); //v8 arr=arr.concat(_class('f-info')); arr=arr.concat(_class('qz_summary')); arr=this._filter(arr,'content'); return arr; }, //用户名 _fromName:function(){ var arr=_class('f_nick'); //v8 arr=arr.concat(_class('f-nick')); arr=this._filter(arr,'name'); return arr; }, //文本 _text:function(obj){ var t=''; var arr=obj.childNodes; for(var i=0,len=arr.length;i<len;i++){ t+=arr[i].textContent; } t=t.replace(/\s/g,''); return t; }, _filter:function(arr,type){ var html,item,i,j,retArr=[], filter=filterStr[type]; for(i=arr.length;i--;){ item=arr[i]; html=this._text(item); for(j=filter.length;j--;){ if(html.indexOf(filter[j])!=-1){ var p=item.parentElement.parentElement.parentElement; retArr.push(p);break; } } } return retArr; }, //执行删除操作 doRemove : function () { var arrs = this._getArr(); //还是隐藏吧 for (var j = 0, len = arrs.length; j < len; j++) this.hide(arrs[j]); } }; QQZoneCleaner.doRemove(); check(function(){ return w.QZONE.qzEvent; }, function(){ w.QZONE.qzEvent.addEventListener('QZ_SCROLL',function(){ QQZoneCleaner.doRemove(); }); }); })(unsafeWindow);