run |
// click to delete elements. (use alt/ctrl/shift to perform default click).
// run again to cancel the effect.
var name = '_deleter_', me;
if((me = self[name])){
var undo = self.detachEvent
? function(elm, evn, fun){ elm.detachEvent('on'+ evn, fun) }
: function(elm, evn, fun){ elm.removeEventListener(evn, fun, false) };
me.modify = function(elm, evn, fun){
undo(elm, evn, fun);
if(elm.__bgc) elm.style.backgroundColor = elm.__bgc;
}
me.go();
self[name] = undefined;
} else self[name] = new function(){
var color = '#ccc', out = true;
var getCS = document.defaultView
? document.defaultView.getComputedStyle
: function(elm){ return elm.currentStyle || elm.style };
me = {
exclude: /html|body/i,
elements: document.getElementsByTagName('*'),
remover: function(e){ e ?1: e = event;
if(e.shiftKey || e.ctrlKey || e.altKey) return;
var elm = e.srcElement || e.target;
return !elm.parentNode.removeChild(elm);
},
encolor: function(e){ e ?1: e = event;
if(!out) return;
var elm = e.srcElement || e.target;
out = false;
elm.__bgc = getCS(elm, '').backgroundColor;
elm.style.backgroundColor = color;
},
decolor: function(e){ e ?1: e = event;
var elm = e.srcElement || e.target;
if(elm.__bgc){
elm.style.backgroundColor = elm.__bgc;
elm.__bgc = null;
}
out = true;
},
modify: self.attachEvent
? function(elm, evn, fun){ elm.attachEvent('on'+ evn, fun) }
: function(elm, evn, fun){ elm.addEventListener(evn, fun, false) },
go: function(){ with(this){
for(var e, i = 0; e = elements[i++];) if(e.tagName && !exclude.test(e.tagName)){
modify(e, 'mousedown', remover);
modify(e, 'mouseover', encolor);
modify(e, 'mouseout', decolor);
}
}}
};
me.go();
return me;
}
|