-
+/**
+ *
+ * could this work by findind all the visible text,
+ * then making them hidden..
+ *
+ * -- make a snapshot of the background..
+ *
+ * -- delete the whole page...
+ * -- show the image as the background.
+ * -- then overlay all the text given their calculated positions..
+ *
+ *
+ *
+ */
(function(){
- //var camelize = function(a,b){
- // return b.toUpperCase();
- //}
+ var camelize = function(a,b){
+ return b.toUpperCase();
+ }
- var keys = ['fontFamily','fontSize','fontWeight','fontStyle','color',
- 'textTransform','textDecoration','letterSpacing','wordSpacing',
- 'lineHeight','textAlign','verticalAlign','direction','backgroundColor',
- 'backgroundImage','backgroundRepeat','backgroundposition',
- 'backgroundAttachment','opacity','width','height','top','right','bottom',
- 'left','marginTop','marginRight','marginBottom','marginLeft',
- 'paddingTop','paddingRight','paddingBottom','paddingLeft',
- 'borderTopWidth','borderRightWidth','borderBottomWidth',
- 'borderLeftWidth','borderTopColor','borderRightColor',
- 'borderBottomColor','borderLeftColor','borderTopStyle',
- 'borderRightStyle','borderBottomStyle','borderLeftStyle','position',
- 'display','visibility','zIndex','overflowX','overflowY','whiteSpace',
- 'clip','float','clear','cursor','listStyleImage','listStylePosition',
- 'listStyleType','markerOffset'
- ];
+
- var fillStyle = function(dom)
+ var fillStyle = function(dom, pstyle)
{
if (!dom || dom.nodeType != 1) {
+ //console.log("SKIP: " + dom.nodeName);
return;
}
- console.log(dom.nodeName);
+ //console.log(dom.nodeName);
var style = window.getComputedStyle(dom, null);
- if (style.display == 'none') {
+ if (style.display == 'none' || dom.nodeName == "NOSCRIPT" || dom.nodeName == "SCRIPT" ) {
dom.parentElement.removeChild(dom);
return;
}
- var pstyle = false;
- if (dom.nodeName != 'BODY') {
- pstyle = window.getComputedStyle(dom.parentElement, null);
-
+ var cn = [];
+
+ if (dom.childNodes.length > 100) {
+ console.log(dom);
+ throw "too many child nodes?" + dom.childNodes.length ;
+ }
+ for (var i = 0;i < dom.childNodes.length;i++) {
+ cn.push(dom.childNodes[i]);
+ }
+
+ if (cn.length > 100) {
+ console.log(dom);
+ throw "too many child nodes? cn";
}
+ for (var i = 0;i < cn.length;i++) {
+
+ //console.log( i + ':'+ cn[i].nodeName);
+ fillStyle(cn[i], style);
+ }
+
+
+ //var pstyle = false;
+ //if (dom.nodeName != 'BODY') {
+ // pstyle = window.getComputedStyle(dom.parentElement, null);
+ //}
+ if (dom.nodeName == 'SPAM') {
+ pstyle = false; //?? others??
+ }
+
+ //if (dom.nodeName == 'LI') { throw 'done'; }
- for(var i=0;i<keys.length;i++){
- var prop = keys[i];
- //var camel = prop.replace(/\-([a-z])/g, camelize);
+
+ for(var i=0;i<style.length;i++){
+ var prop = style[i];
+ var camel = prop.replace(/\-([a-z])/g, camelize);
var val = style.getPropertyValue(prop);
//returns[camel] = val;
if (pstyle && pstyle[prop] == val) {
continue;
}
- console.log(prop + '=' + val);
- dom.style[prop] = val;
- }
- for (var i = dom.childNodes.length -1; i--; i> -1) {
- fillStyle(dom.childNodes[i]);
+ //console.log(prop + '=' + val);
+
+ dom.style[camel] = val;
+
+
}
-
+ var es = dom.getAttribute('style');
+ //console.log(dom.nodeName + '::' + es);
+ dom.setAttribute('style', es);
//return returns;
}
- var el = document.querySelector('body');
- fillStyle(el);
- //var matches = document.getElementsByTagName('style');
- //for(var i =0;i < matches.length;i++) {
- // matches[i].parentElement.removeChild(matches[i]);
- //}
-
-
+ function changeit() {
+
+
+ var el = document.querySelector('body');
+ fillStyle(el), false;
+
+ var matches = document.getElementsByTagName('style');
+ var rm = [];
+ for(var i =0;i < matches.length;i++) {
+ rm.push(matches[i]);
+
+ }
+ var matches = document.getElementsByTagName('link');
+ for(var i =0;i < matches.length;i++) {
+ rm.push(matches[i]);
+ }
+ for(var i =0 ; i < rm.length;i++) {
+ rm[i].parentNode.removeChild(rm[i]);
+ }
+
+
+
+ }
+ changeit();
+ console.log("done");
})();
\ No newline at end of file