Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Maledetto OnLoad

    Ciao a tutti ... ho scaricato da html.it un simpatico newsticker da applicare sul mio sito ( http://javascript.html.it/script/ved...r-con-memoria/ ) lo script va che un gioiello ma...

    ... il problema ora è che questo si carica solo dopo che si è caricata tutta la pagina, che purtroppo è abbastanza lunga e pesante ... considerando che il mio newsticker è proprio a centro pagina, succede che questo appaia solo dopo un tot di secondi (quando tutti gli elementi della pagina ormai sono caricati).

    C'è una soluzione per ovviare al problema?

    Grazie mille
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    un piccolo uppettino?
    Perchè uso Maxthon? | Mi piace questa chat

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il fatto che consigli una soluzione "alla dean edwards" mi ha fatto sospettare che finalmente fosse saltato fuori un valido motivo per non usare il tuo approccio al DOMContentLoaded

    sinceramente preferisco molto di + il tuo al primo,
    quindi, non so se ho capito bene, se non forzo l' invio dell' output x es. con flush() posso ancora considerare la tua soluzione valida?
    e' questo l' unico scenario in cui ci sarebbero problemi?

  5. #5
    Perdonate la mia domanda stupida ma di Javascript non so veramente nulla ....
    mi basta inserire quel JS e lui stesso "forzerà" il mio evento onload?

    Grazie
    Perchè uso Maxthon? | Mi piace questa chat

  6. #6
    Originariamente inviato da Xinod
    il fatto che consigli una soluzione "alla dean edwards" mi ha fatto sospettare che finalmente fosse saltato fuori un valido motivo per non usare il tuo approccio al DOMContentLoaded
    diciamo che se non so il livello di preparazione del richiedente tantomeno dove dovrà andare a finire l'eventuale script consigliato ho capito che è molto meglio consigliare quella soluzione perchè sicuramente non avrà problemi



    Originariamente inviato da Xinod
    sinceramente preferisco molto di + il tuo al primo
    anche io



    Originariamente inviato da Xinod
    quindi se non forzo l' invio dell' output x es. con flush() posso ancora considerare la tua soluzione valida?
    e' questo l' unico scenario in cui ci sarebbero problemi?
    flush è "tipicamente PHP", non so come si comportino gli altri linguaggi.

    Se il linguaggio non invia niente se non a layout completo non dovrebbero esserci controindicazioni col "mio" metodo ma non so se con pagine chilometriche possano venir fuori problemi di sorta, per ora non mi risulta.

    Se il linguaggio per qualche motivo fa operazioni durante l'invio dell'output (e PHP è embed quindi spessissimo viene usato durante l'invio della pagina) e qualcuna di queste operazioni dovesse spezzare il flusso di invio per motivi di prestazioni, calcoli complessi a metà pagina o altro, il mio sistema fallisce.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    perfetto Andrea, tutto chiaro

    @ bukowski
    non vorrei dire sciocchezze ma nel tuo caso potrebbe anche non esserci bisogno di gestire il DOMload, lo script si trova nel body e sicuramente non andra' ad interagire con elementi non ancora definiti nel documento

    potrebbe bastare sostituire
    codice:
    if (window.addEventListener)
    window.addEventListener("load", beginticker, false)
    else if (window.attachEvent)
    window.attachEvent("onload", beginticker)
    else if (document.all || document.getElementById)
    window.onload=beginticker
    con
    beginticker()

    altrimenti, se usi lo script linkato da Andrea, semplicemente sostituisci la parte di cui sopra con
    addDOMLoadEvent(beginticker);

    ciao

  8. #8
    Originariamente inviato da Xinod
    perfetto Andrea, tutto chiaro

    @ bukowski
    non vorrei dire sciocchezze ma nel tuo caso potrebbe anche non esserci bisogno di gestire il DOMload, lo script si trova nel body e sicuramente non andra' ad interagire con elementi non ancora definiti nel documento

    potrebbe bastare sostituire
    codice:
    if (window.addEventListener)
    window.addEventListener("load", beginticker, false)
    else if (window.attachEvent)
    window.attachEvent("onload", beginticker)
    else if (document.all || document.getElementById)
    window.onload=beginticker
    con
    beginticker()

    altrimenti, se usi lo script linkato da Andrea, semplicemente sostituisci la parte di cui sopra con
    addDOMLoadEvent(beginticker);

    ciao
    Scusami Xinod la domanda stupida, ma la mia difficoltà nel capire Javascript è pari alla difficoltà che Urbani ha nel capire il web

    Tutto quel pezzo di codice che mi hai postato lo sostituisco semplicemente con beginticker() ??

    Grazie mille
    Perchè uso Maxthon? | Mi piace questa chat

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    :zizi:

  10. #10
    Originariamente inviato da Xinod
    perfetto Andrea, tutto chiaro
    in realtà sono venute fuori novità su quella funzione ... parlandone con gli sviluppatori di Dojo ...


    intanto credo di aver scritto una versione più leggera ed elegante .... questa:
    codice:
    function onContent(callback){
    	__onload__={
    		E:function(){window.onload=null;callback()},
    		IES:function(e){if(e.readyState==="complete")this.E()},
    		FO:document.addEventListener?"document.addEventListener('DOMContentLoaded',__onload__.E,false)":"void(0)"
    	};
    	onload=callback;
    	if(/WebKit|Konqueror/i.test(navigator.userAgent))
    		(function(){/loaded|complete/.test(document.readyState)?__onload__.E():setTimeout(arguments.callee,1)})();
    	else if(!window.opera||parseInt(window.opera.version())>=9)
    		document.write('<scr'+'ipt src="javascript:'+__onload__.FO+'" defer="defer" onreadystatechange="__onload__.IES(this)"></scr'+'ipt>');
    };
    che non usa i condizionali ed inoltre è ben supportata anche da Konqueror, il browser Linux di KDE che sta a pari passo con Safari ... questa funzione può essere facilmente gestibile per eventi multipli tramite questa:
    codice:
    function addContentEvent(callback) {
    	if(!window.__onload__)
    		onContent(function(){__onload__.callEvents()});
    	__onload__.callEvents = function() {
    		for(var i = 0; i < __onload__.events.length; i++)
    			__onload__.events[i]();
    	};
    	if(!__onload__.events)
    		__onload__.events = [callback];
    	else
    		__onload__.events[__onload__.events.length] = callback;
    };
    utilizzabile, ad esempio, in questo modo:
    codice:
    addContentEvent(function(){alert("hello dom 1")});
    addContentEvent(function(){alert("hello dom 2")});
    il tutto è descritto, a livello di concetti e codice, in questo mio post nel mio blog:
    http://webreflection.blogspot.com/20...entloaded.html

    mentre per chi avesse dubbi sulla vecchia proposta con la verifica del document.body, rimando a questo link:
    http://webreflection.blogspot.com/20...entloaded.html


    Le novità di cui parlavo riguardano sempre la funzione proposta da Dean Edwards e qui riadattata da me ... in pratica questa funzione genererà degli alert se usata in spazi SSL (tipo https). Questo avviene perchè il source impostato tramite javascript, quindi dinamico, a prescindere che sia void(0), ovvero undefined, oppure no, viene visto male dalla modalità sicura SSL perchè il file potrebbe non essere stato inviato dal server e quindi non è detto che sia affidabile.

    In pratica i source dinamici vengono interpretati come:
    il server non ha inviato questo file quindi ci sono alcuni script sicuri ed altri insicuri.

    Stando a quanto dettomi da uno sviluppatore Dojo la soluzione è non usare il source (src) dello script e scrivere codice direttamente al suo interno:
    codice:
    <script defer>imposta_DOMOnLoad();</script>
    sempre aggiungendo lo script dinamicamente ... unico problema è che così IE non fa più un tubo se non il solito onload e dovrei approfondire questo approccio ... solo che in questo momento Google è down e Gmail non funziona

    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
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.