Created
August 2, 2017 14:51
-
-
Save LeonardoCiaccio/c3f926783269702edfe44b0f2188c38c to your computer and use it in GitHub Desktop.
Aggiunge un attributo con un valore shared, utile per distinguere elementi con struttura uguale
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| Version : 1.0.0 | |
| Aggiunge un attributo shared dinamico a seconda delle opzioni, molto utile per avere riferimenti shared | |
| vuol dire che più di un elemento può avere lo stesso valore: | |
| window._class( { | |
| selector : "signature" // default "_class" | |
| ,main : "body" // default "html" | |
| ,allowed : [ "div", "span" ] // default [] | |
| ,ignored : [] // default [] | |
| ,onend : function(){ console.log( "END" ); } // default function(){} | |
| } ); | |
| In questo esempio tutti i "div" e i "span" contenuti nel tag "body" otterranno | |
| in aggiunta un nuovo attributo con nome "signature" e valore shared. | |
| L'opzione "ignored" possiede una priorità maggiore di "allowed", se avessimo settato | |
| questa opzione a "[ 'span' ]" tutti gli "span" non avrebbero ottenuto i nuovi attributi | |
| anche se presenti in "allowed" | |
| COMPRESSO : | |
| !function(e){"use strict";function n(e,n){var r=(65535&e)+(65535&n),t=(e>>16)+(n>>16)+(r>>16);return t<<16|65535&r}function r(e,n){return e<<n|e>>>32-n}function t(e,t,o,i,a,u){return n(r(n(n(t,e),n(i,u)),a),o)}function o(e,n,r,o,i,a,u){return t(n&r|~n&o,e,n,i,a,u)}function i(e,n,r,o,i,a,u){return t(n&o|r&~o,e,n,i,a,u)}function a(e,n,r,o,i,a,u){return t(n^r^o,e,n,i,a,u)}function u(e,n,r,o,i,a,u){return t(r^(n|~o),e,n,i,a,u)}function c(e,r){e[r>>5]|=128<<r%32,e[(r+64>>>9<<4)+14]=r;var t,c,l,f,d,g=1732584193,s=-271733879,m=-1732584194,y=271733878;for(t=0;t<e.length;t+=16)c=g,l=s,f=m,d=y,g=o(g,s,m,y,e[t],7,-680876936),y=o(y,g,s,m,e[t+1],12,-389564586),m=o(m,y,g,s,e[t+2],17,606105819),s=o(s,m,y,g,e[t+3],22,-1044525330),g=o(g,s,m,y,e[t+4],7,-176418897),y=o(y,g,s,m,e[t+5],12,1200080426),m=o(m,y,g,s,e[t+6],17,-1473231341),s=o(s,m,y,g,e[t+7],22,-45705983),g=o(g,s,m,y,e[t+8],7,1770035416),y=o(y,g,s,m,e[t+9],12,-1958414417),m=o(m,y,g,s,e[t+10],17,-42063),s=o(s,m,y,g,e[t+11],22,-1990404162),g=o(g,s,m,y,e[t+12],7,1804603682),y=o(y,g,s,m,e[t+13],12,-40341101),m=o(m,y,g,s,e[t+14],17,-1502002290),s=o(s,m,y,g,e[t+15],22,1236535329),g=i(g,s,m,y,e[t+1],5,-165796510),y=i(y,g,s,m,e[t+6],9,-1069501632),m=i(m,y,g,s,e[t+11],14,643717713),s=i(s,m,y,g,e[t],20,-373897302),g=i(g,s,m,y,e[t+5],5,-701558691),y=i(y,g,s,m,e[t+10],9,38016083),m=i(m,y,g,s,e[t+15],14,-660478335),s=i(s,m,y,g,e[t+4],20,-405537848),g=i(g,s,m,y,e[t+9],5,568446438),y=i(y,g,s,m,e[t+14],9,-1019803690),m=i(m,y,g,s,e[t+3],14,-187363961),s=i(s,m,y,g,e[t+8],20,1163531501),g=i(g,s,m,y,e[t+13],5,-1444681467),y=i(y,g,s,m,e[t+2],9,-51403784),m=i(m,y,g,s,e[t+7],14,1735328473),s=i(s,m,y,g,e[t+12],20,-1926607734),g=a(g,s,m,y,e[t+5],4,-378558),y=a(y,g,s,m,e[t+8],11,-2022574463),m=a(m,y,g,s,e[t+11],16,1839030562),s=a(s,m,y,g,e[t+14],23,-35309556),g=a(g,s,m,y,e[t+1],4,-1530992060),y=a(y,g,s,m,e[t+4],11,1272893353),m=a(m,y,g,s,e[t+7],16,-155497632),s=a(s,m,y,g,e[t+10],23,-1094730640),g=a(g,s,m,y,e[t+13],4,681279174),y=a(y,g,s,m,e[t],11,-358537222),m=a(m,y,g,s,e[t+3],16,-722521979),s=a(s,m,y,g,e[t+6],23,76029189),g=a(g,s,m,y,e[t+9],4,-640364487),y=a(y,g,s,m,e[t+12],11,-421815835),m=a(m,y,g,s,e[t+15],16,530742520),s=a(s,m,y,g,e[t+2],23,-995338651),g=u(g,s,m,y,e[t],6,-198630844),y=u(y,g,s,m,e[t+7],10,1126891415),m=u(m,y,g,s,e[t+14],15,-1416354905),s=u(s,m,y,g,e[t+5],21,-57434055),g=u(g,s,m,y,e[t+12],6,1700485571),y=u(y,g,s,m,e[t+3],10,-1894986606),m=u(m,y,g,s,e[t+10],15,-1051523),s=u(s,m,y,g,e[t+1],21,-2054922799),g=u(g,s,m,y,e[t+8],6,1873313359),y=u(y,g,s,m,e[t+15],10,-30611744),m=u(m,y,g,s,e[t+6],15,-1560198380),s=u(s,m,y,g,e[t+13],21,1309151649),g=u(g,s,m,y,e[t+4],6,-145523070),y=u(y,g,s,m,e[t+11],10,-1120210379),m=u(m,y,g,s,e[t+2],15,718787259),s=u(s,m,y,g,e[t+9],21,-343485551),g=n(g,c),s=n(s,l),m=n(m,f),y=n(y,d);return[g,s,m,y]}function l(e){var n,r="",t=32*e.length;for(n=0;t>n;n+=8)r+=String.fromCharCode(e[n>>5]>>>n%32&255);return r}function f(e){var n,r=[];for(r[(e.length>>2)-1]=void 0,n=0;n<r.length;n+=1)r[n]=0;var t=8*e.length;for(n=0;t>n;n+=8)r[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return r}function d(e){return l(c(f(e),8*e.length))}function g(e,n){var r,t,o=f(e),i=[],a=[];for(i[15]=a[15]=void 0,o.length>16&&(o=c(o,8*e.length)),r=0;16>r;r+=1)i[r]=909522486^o[r],a[r]=1549556828^o[r];return t=c(i.concat(f(n)),512+8*n.length),l(c(a.concat(t),640))}function s(e){var n,r,t="0123456789abcdef",o="";for(r=0;r<e.length;r+=1)n=e.charCodeAt(r),o+=t.charAt(n>>>4&15)+t.charAt(15&n);return o}function m(e){return unescape(encodeURIComponent(e))}function y(e){return d(m(e))}function p(e){return s(y(e))}function h(e,n){return g(m(e),m(n))}function v(e,n){return s(h(e,n))}function A(e,n,r){return n?r?h(n,e):v(n,e):r?y(e):p(e)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:e.md5=A}(this),function(){"use strict";var e={selector:"_class",main:"html",allowed:[],ignored:[],onend:function(){}},n=function(e){return"string"==typeof e?e.toUpperCase():e};Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),window._class=function(r){var t=JSON.parse(JSON.stringify(e));r&&("string"==typeof r.selector&&(t.selector=r.selector),"string"==typeof r.main&&(t.main=r.main),Array.isArray(r.allowed)&&(t.allowed=r.allowed),Array.isArray(r.ignored)&&(t.ignored=r.ignored),"function"==typeof r.onend&&(t.onend=r.onend));for(var o=0;o<t.allowed.length;o++)t.allowed[o]=n(t.allowed[o]);for(var o=0;o<t.ignored.length;o++)t.ignored[o]=n(t.ignored[o]);var i=document.querySelector(t.main);if(!i)return t.onend();for(var a=document.querySelectorAll("*"),u=0;u<a.length;u++)a[u].removeAttribute(t.selector);a=[],a=i.getElementsByTagName("*");for(var u=0;u<a.length;u++){for(var c=a[u].getElementsByTagName("*"),l="",f="",d=0;d<c.length;d++)t.allowed.indexOf(c[d].tagName.toUpperCase())<0||t.ignored.indexOf(c[d].tagName.toUpperCase())>-1||(l+=c[d].tagName.toUpperCase());f=""!=l?md5(l):"",a[u].setAttribute(t.selector,f)}t.onend()}}(); | |
| */ | |
| // --> MD5 lib https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.8.0/js/md5.min.js | |
| !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this); | |
| ( function(){ | |
| "use strict"; | |
| // --> Varibili globali | |
| var | |
| _options = { | |
| //--> Il nome del selettore univoco | |
| selector : "_class" | |
| // --> Il selettore che contiene tutti gli elementi da segnare | |
| ,main : "html" | |
| // --> Tags consentiti | |
| ,allowed : [] | |
| // --> Ignora questi tag, filtra | |
| ,ignored : [] | |
| // --> Evento generato alla fine della routin | |
| ,onend : function(){} | |
| } | |
| ,_toUpper = function( x ){ | |
| return ( typeof x === "string" ) ? x.toUpperCase() : x; | |
| } | |
| ; | |
| // --> Controllo array nativo, se è un array | |
| if ( !Array.isArray ){ | |
| Array.isArray = function( arg ){ | |
| return ( Object.prototype.toString.call( arg ) === "[object Array]" ); | |
| }; | |
| } | |
| // --> L'oggetto _class | |
| window._class = function( opts ){ | |
| // --> Clono le opzioni di base ed eventualmente lo aggiorno | |
| var myopts = JSON.parse( JSON.stringify( _options ) ); | |
| if( opts ){ | |
| if( typeof opts.selector === "string" )myopts.selector = opts.selector; | |
| if( typeof opts.main === "string" )myopts.main = opts.main; | |
| if( Array.isArray( opts.allowed ) )myopts.allowed = opts.allowed; | |
| if( Array.isArray( opts.ignored ) )myopts.ignored = opts.ignored; | |
| if( typeof opts.onend === "function" )myopts.onend = opts.onend; | |
| } | |
| // --> I consentiti in maiuscolo | |
| for( var i = 0; i < myopts.allowed.length; i++ ){ | |
| myopts.allowed[ i ] = _toUpper( myopts.allowed[ i ] ); | |
| } | |
| // --> Il filtro in maiuscolo | |
| for( var i = 0; i < myopts.ignored.length; i++ ){ | |
| myopts.ignored[ i ] = _toUpper( myopts.ignored[ i ] ); | |
| } | |
| // --> Seleziono il contenitore (main) | |
| var main = document.querySelector( myopts.main ); | |
| if( !main )return myopts.onend(); | |
| // --> Rimuovo tutte le signature | |
| var all = document.querySelectorAll( "*" ); | |
| for( var x = 0; x < all.length; x++ ){ | |
| all[ x ].removeAttribute( myopts.selector ); | |
| } | |
| // --> Segno ogni singolo elemento con md5 in scalata | |
| all = []; | |
| all = main.getElementsByTagName( "*" ); | |
| var signed = 0; | |
| for( var x = 0; x < all.length; x++ ){ | |
| // --> Devo controllare tutti gli elementi consentiti per ricreare l'ordine | |
| var | |
| allChild = all[ x ].getElementsByTagName( "*" ) | |
| ,concat = "" | |
| ,hash = "" | |
| ; | |
| for( var xx = 0; xx < allChild.length; xx++ ){ | |
| if( myopts.allowed.indexOf( allChild[ xx ].tagName.toUpperCase() ) < 0 )continue; | |
| if( myopts.ignored.indexOf( allChild[ xx ].tagName.toUpperCase() ) > -1 )continue; | |
| concat = concat + allChild[ xx ].tagName.toUpperCase(); | |
| } | |
| hash = ( concat != "" ) ? md5( concat ) : ""; | |
| all[ x ].setAttribute( myopts.selector, hash ); | |
| } | |
| myopts.onend(); | |
| }; // <-- window._id() | |
| } )(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment