您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
CleanHide.Hotkey:CRTL+Q. Created By Inorth. [email protected]://notebk.spaces.live.com/
// ==UserScript== // @name CleanHide & Enable RightClick-Copy // @namespace http://notebk.spaces.live.com/ // @description CleanHide.Hotkey:CRTL+Q. Created By Inorth. [email protected]://notebk.spaces.live.com/ // @include * // @version 0.3 // ==/UserScript== var debug=false; //debug or release switch!! var CleanHideObj=new CleanHideClass(); function CleanHideClass() { //functions;id mean cleanhid ,AppID mean call from firefox or mozilla (different! call from overlayFF or overlayMZ!) this.on=function(id,bMZ) { //this.strBundle = document.getElementById("cleanhide-strings"); //get the strings use in js! if(id == 0) { var page=/* document.getElementById("content").contentDocument */document; //main page this.RemoveHide(page,"span"); this.RemoveHide(page,"font"); this.RemoveHide(page,"div"); this.RemoveHide(page,"p"); //alert(this.strBundle.getString("CleanHideSuccess")); //document.getElementById("statusbar-display").label=this.strBundle.getString("CleanHideSuccess"); } } this.getobjstyle=function(node,prop) { try { return node.ownerDocument.defaultView.getComputedStyle(node, "").getPropertyValue(prop); } catch(e) { if(debug) { alert(e.message); } return "200"; } } this.RemoveHide=function(page,objname) { try { var minValue=15; var objs=page.getElementsByTagName(objname); //get all element if(objs.length == 0) //no span or font object found! { if(debug) { alert("no object found!:"+objname); } } else { //determean every object! for(var i=objs.length-1;i>=0;i--) //must from last to first!!! for detect every element!! { var node=objs.item(i); //get one element //if this object is invisible,we delete it!! if(this.getobjstyle(node,"display") == "none" || this.getobjstyle(node,"visibility") =="hidden" || parseInt(this.getobjstyle(node,"font-size")) == 0) //if this element'style is none,than remove it!! { if(debug) { alert("remove invisiable!"); } node.parentNode.removeChild(node); } else //normal object!have color! { if(node.parentNode) //if it has parent node!! { var orgNode=node; var orgColor=this.getobjstyle(orgNode,"color") var orgRGB=getRGB(orgColor); //get org node's RGB only color. var parentNode=node.parentNode var parentBgColor=this.getobjstyle(parentNode,"background-color"); var isLast=false; while(parentBgColor == "transparent") //parent bg is transparent!!,get last no transparent node!! { //if(debug && orgRGB[0] != 0) //{ // alert("org color:"+orgRGB[0]+","+orgRGB[1]+","+orgRGB[2]+"\n" // +"parent bgcolor:"+parentBgRGB[0]+","+parentBgRGB[1]+","+parentBgRGB[2]+"\n" // +"parentNode name:"+parentNode.nodeName+"parent id:"+parentNode.id+"bgcolor:"+this.getobjstyle(parentNode,"background-color")); //} if(parentNode.parentNode == null) { isLast=true; break; } parentNode=parentNode.parentNode; parentBgColor=this.getobjstyle(parentNode,"background-color"); if(parentBgColor != "transparent") //parent have color { break; } } if(isLast) //body is RGB(255,255,255)!!! { if(debug) { alert("last!!"); } if((Math.abs(orgRGB[0]-255)<=minValue)&&(Math.abs(orgRGB[1]-255)<=minValue)&&(Math.abs(orgRGB[2]-255)<=minValue)) { orgNode.parentNode.removeChild(orgNode); //color is near white,we delete it! } } else { if(debug) { alert("compare color and parent bgcolor!"); } parentBgRGB=getRGB(parentBgColor); if((Math.abs(orgRGB[0]-parentBgRGB[0])<=minValue)&&(Math.abs(orgRGB[1]-parentBgRGB[1])<=minValue)&&(Math.abs(orgRGB[2]-parentBgRGB[2])<=minValue)) { orgNode.parentNode.removeChild(orgNode); //color is near white,we delete it! } } }//end of hava parent }//if invisible }//for ... every object }//object lentgth == 0 //find sub frames var itemFrames = page.getElementsByTagName("frame"); var itemiFrames = page.getElementsByTagName("iframe"); var frame, iframe; if (itemFrames.length > 0) { for (var i = 0 ; i< itemFrames.length ; i++) { frame = itemFrames[i].contentDocument; this.RemoveHide(frame,objname); // recursion for frames } } if (itemiFrames.length > 0) { for (var i = 0 ; i < itemiFrames.length ; i++) { iframe = itemiFrames[i].contentDocument; this.RemoveHide(iframe,objname); // recursion for iframes } } } catch(e) { if(debug) { alert(e.message); } } } } //this function for get R G B data from string rgb(r,g,b) or blue,etc function getRGB(colorString) { var RGB = new Array; var tempSting=colorString.substring(4,colorString.length-1); var tempArray=tempSting.split(","); RGB[0]=parseInt(tempArray[0]); RGB[1]=parseInt(tempArray[1]); RGB[2]=parseInt(tempArray[2]); return RGB; } function antiCopy(){ var attr = ['onmousedown','ondragstart','onselectstart','onselect','oncontextmenu','onbeforecopy','oncopy'];//anticopy attribute enum kill = new Function("return true"); var tt = document.getElementsByTagName('*'); for (var j=0;j<attr.length;j++){ document[attr[j]] = kill;// top attribute for (var i=0;i<tt.length; i++){// child object if(tt[i].getAttribute(attr[j])!=null) { tt[i].setAttribute(attr[j],'return true;') } } } var antiCopyCSS = document.createElement('style'); antiCopyCSS.innerHTML='*{-moz-user-select: auto!important; -webkit-user-select: auto!important; -ms-user-select: auto!important; -o-user-select:auto!important;user-select:auto!important}'; document.body.appendChild(antiCopyCSS); } function keys(evt) { //var evt=evt?evt:(window.event?window.event:null); if(evt.ctrlKey && evt.keyCode=="81") { //var CleanHideObj=new CleanHideClass(); CleanHideObj.on(0,1); //add enable right-click and copy feature antiCopy(); //end alert("Clean Hide successfully! Remember Hotkeys: CTRL+Q"); } } document.addEventListener('keydown', keys, false); GM_registerMenuCommand ('Clean Hide', function(e){ CleanHideObj.on(0,1) alert("Clean Hide successfully! Remember Hotkeys: CTRL+Q"); });