Funziona che è un gioiello!!!Originariamente inviato da Xinod
![]()
Grazie mille![]()
![]()
molto interessati, modifico titolo e inserisco in script discussioni utiliOriginariamente inviato da andr3a
Se interessati continuerò a postare gli sviluppi o se mai ce ne sarà uno, il metodo ufficioso che nonda problemi di sorta in qualunque ambiente![]()
per riassumere: con l' ultima versione postata da Andrea al momento si riscontrano problemi solo con IE in area SSL
nella 0.4 di Dojo hanno tolto i commenti condizionali ed aggiunto fagianevolmente un attachEvent sul document ...
document.onreadystatechange ... etc etc .... peccato che non sia equivalente all'hack del defer e peccato quindi che così lanciano l'evento esattamente all'onload .... boh, se avete idee sono tutto orecchie, io dai mille tests fatti nn sono riuscito ad emulare il trick col defer a source nulla nemmeno riscrivendo la pagina![]()
[Premessa OT]... e dire che mi dissero che in Dojo c'erano i migliori sviluppatori javascript del mondo ... [/Premessa OT]
Allora, parlando col "grande" Tom Trenka di Dojo è venuto fuori che per loro l'importante è che onreadystatechange agisca prima dell'onload (e ci è rimasto male del mio esempio dove mostravo che usare onreadystatechange era sbagliato ... chissà che tests avevano fatto prima ...)
continua a dirmi, nonostante la palese smentita, che quando readyState è == "complete" significa che il documento è pronto ... e su questo non posso dargli torto ma da qui a chiamare la loro implementazione DOMContentLoaded per IE mi pare veramente eccessivo ... per non dire una ca##ata plateale ... ora gli ho mostrato che il loro concetto di DOMContentLoaded, senza flush espliciti o altro, fa risparmiare su una pagina non in cache uno 0.01 secondi di tempo contro l' uno, 2, 3 N in rapporto al peso della pagina e delle immagini del vero DOMContentLoaded di Mozilla o della mia funzione onContent, basata sul metodo di Dean Edward.
Questa la pagina di esempio: http://www.3site.eu/jstests/onConten...atechange2.php
dove si può notare si che onreadystatechange con valore readyState viene chiamato prima dell'onload, ma dove si vede un abisso di differenza tra FireFox ed Internet Explorer su quella pagina, dove il primo utilizza DOMContentLoaded.
Il tempo mostrato alla fine è quello trascorso tra la prima chiamata DOMCOntentLoaded e la seconda, notare come in IE sfiori lo 0 di differenza.
In pratica attualmente Dojo non ha implementato alcuna modifica di rilievo al metodo tradizionale onload ... pur chiamandola DOMContentLoaded per IE ...![]()
dall'ultima discussione è emerso che in realtà Dojo non ha priorità di questo tipo, ovvero non gli interessa avere una funzione in grado di emulare DOMContentLoaded perchè essendo Dojo molto pesante nel suo insieme, quindi usato soprattutto in infrastrutture intranet ed extranet, la cosa importante, per loro, è avere un evento in grado di effettuare alcune oeperazioni prima della chiamata onload.
In pratica seppur passi mezzo millesimo di secondo tra il readyState == "complete" e la chiamata ad onload, a loro interessa soprattutto riuscire a sfruttare prima dell'onload quell'attimo per inizializzare alcune parti del sistema.
Lo stesso Tom Trenka mi ha confermato che effettivamente il metodo di Dean doveva essere debuggato meglio prima di inserirlo, infatti sono tornati in dietro per avere risultati simili e molti meno problemi.
Per concludere, ne riparleremo tra una settamana circa, a meno che io non riesca (io o altri) a trovare una soluzione valida che non dia problemi in nessun ambito.
![]()
riguardo al discorso https
Dean stesso in questo commento:
http://dean.edwards.name/weblog/2006...n/#comment5778
suggerisce che nella prima implementazione non ci sono problemi (quella con lo script per IE esterno) avevo già provato ed effettivamente non c'e' problema.
questo puo' essere utile per trovare una soluzione a questo fatto (il fatto che per uno script esterno funzioni mi fa pensare a tempi di caricamento, e viste le dimensioni dello script un setTimeout potrebbe [da provare] risolvere la situazione) :ciapz:
... ma dato che è un link el 3D in rilievo forse è il caso di aggiornarlo con l'ultima uscita che pare vada su tutto e tutti:
questa la pagina con la descrizione
questo il codice, descritto meglio nella pagina appena linkata
metodo presente in versione riadattata anche in bytedomcodice:function onContent(f){//(C)webreflection.blogspot.com var a,b=navigator.userAgent,d=document,w=window, c="__onContent__",e="addEventListener",o="opera",r="readyState", s="<scr".concat("ipt defer src='//:' on",r,"change='if(this.",r,"==\"complete\"){this.parentNode.removeChild(this);",c,"()}'></scr","ipt>"); w[c]=(function(o){return function(){w[c]=function(){};for(a=arguments.callee;!a.done;a.done=1)f(o?o():o)}})(w[c]); if(d[e])d[e]("DOMContentLoaded",w[c],false); if(/WebKit|Khtml/i.test(b)||(w[o]&&parseInt(w[o].version())<9)) (function(){/loaded|complete/.test(d[r])?w[c]():setTimeout(arguments.callee,1)})(); else if(/MSIE/i.test(b))d.write(s); };![]()