Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Preload per il caricamento di una pagina e personalizzazione delle funzioni

    Salve a tutti,

    scrivo per la prima volta su questo forum, ponendo un quesito che mi pare non sia stato trattato (almeno scorrendo la lista del topic in rilievo).

    Premetto che non ho alcuna competenza in materia di javascript... ma vengo subito al dunque.

    Avendo la necessità di un preload, utile per ingannare l'attesa degli utenti con linea di connessione analogica 56 k, su di un sito che sto costruendo le cui pagine contengono sia immagini sia swf, ho trovato in rete quello che mi serviva .

    Si tratta di uno script da inserire nell'head dell'html (quindi non tramite js esterno) e che viene richiamato nel body. E' ottimo perché permette di visualizzare una finestra di messaggio durante il caricamento di una pagina contenente TUTTI i tipi di elementi (immagini, swf, suoni, ecc.), finestra che scompare appena il caricamento è terminato. Inoltre, funziona crossbrowser.

    La finestra di messaggio non è altri che un div , il quale naturalmente può essere personalizzato tramite css assegnandogli un id .
    Ma a parte il testo, ed eventualmente una gif animata che posso inserire nel div , vorrei poter visualizzare pure la percentuale del caricamento in corso .

    Esiste un modo per modificare lo script ottenendo tale funzione in più?

    Oltre a ciò, però c'è un'altra cosa che ritengo più importante e mi preme particolarmente: la possibilità, come dire, di "disabilitare" il preload dopo il primo caricamento . In altri termini, dovendo mettere il preload in tutte le pagine del sito, nonostante ormai gli elementi risultino presenti nella cache del browser, colui che naviga da una pagina all'altra vedrà sempre questa finestra di messaggio anche soltanto per una frazione di secondo, il che è piuttosto fastidioso.

    Invece, io vorrei che il preload venisse visualizzato solo la prima volta che il navigatore visita il sito e che, caricate in cache le pagine, non ci sia più alcuna finestra di messaggio ma agisca in modo silente.

    Spero in una soluzione a questo problema, e ringrazio in anticipo chi saprà aiutarmi.
    alvin68
    "...un alieno su questa terra"

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131

    Re: Preload per il caricamento di una pagina e personalizzazione delle funzioni

    Originariamente inviato da alvin68
    Salve a tutti,

    scrivo per la prima volta su questo forum, ponendo un quesito che mi pare non sia stato trattato (almeno scorrendo la lista del topic in rilievo).

    Premetto che non ho alcuna competenza in materia di javascript... ma vengo subito al dunque.

    Avendo la necessità di un preload, utile per ingannare l'attesa degli utenti con linea di connessione analogica 56 k, su di un sito che sto costruendo le cui pagine contengono sia immagini sia swf, ho trovato in rete quello che mi serviva .

    Si tratta di uno script da inserire nell'head dell'html (quindi non tramite js esterno) e che viene richiamato nel body. E' ottimo perché permette di visualizzare una finestra di messaggio durante il caricamento di una pagina contenente TUTTI i tipi di elementi (immagini, swf, suoni, ecc.), finestra che scompare appena il caricamento è terminato. Inoltre, funziona crossbrowser.

    La finestra di messaggio non è altri che un div , il quale naturalmente può essere personalizzato tramite css assegnandogli un id .
    Ma a parte il testo, ed eventualmente una gif animata che posso inserire nel div , vorrei poter visualizzare pure la percentuale del caricamento in corso .

    Esiste un modo per modificare lo script ottenendo tale funzione in più?
    Uno script preconfezionato empirico (sicuramente esiste in rete) ma che funzioni decente ho qualche dubbio, di fatto hai diversi elementi il browser (che visualizza e interpreta la pagina) il server (dove risiede la pagina) la connessione (che può essere veloce o lenta). E da quello che so io tutti funzionano alla stessa maniera sapendo quanto pesa la pagina e all'incirca a quanto viaggi (adsl/56k) esegue un calcolo e mostra un immagini in percentuale. Ci sono diversi fattori che rendono tutta l'operazione empirica tipo: Identificare la velocità (di solito la si chiede all'utente, e rilevalo in automatico non sono neanche sicuro che si possa fare) le connessioni simultanee sul server che posso cambiare di continuo pertanto rallentare o velocizzare l'operazione di caricamento.
    Detto questo la domanda è ne vale la pena? Se la risposta è si cerca su google "preload in percentuale" o simili.

    Oltre a ciò, però c'è un'altra cosa che ritengo più importante e mi preme particolarmente: la possibilità, come dire, di "disabilitare" il preload dopo il primo caricamento . In altri termini, dovendo mettere il preload in tutte le pagine del sito, nonostante ormai gli elementi risultino presenti nella cache del browser, colui che naviga da una pagina all'altra vedrà sempre questa finestra di messaggio anche soltanto per una frazione di secondo, il che è piuttosto fastidioso.
    Per eliminare questo disagio puoi impostare un cookie (per info sui cookie vedi discussioni utili nella pagina iniziale di questo forum) nello script che funzionerà in questa maniera: Leggo se esiste il cookie se non esiste lo creo e lo imposto in on e faccio partire il preload se esiste non faccio partire il preload, questo in sintesi.

    Invece, io vorrei che il preload venisse visualizzato solo la prima volta che il navigatore visita il sito e che, caricate in cache le pagine, non ci sia più alcuna finestra di messaggio ma agisca in modo silente.

    Spero in una soluzione a questo problema, e ringrazio in anticipo chi saprà aiutarmi.
    Ciao e benvenuto sul forum
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

    Re: Re: Preload per il caricamento di una pagina e personalizzazione delle funzioni

    Originariamente inviato da cavicchiandrea
    Ci sono diversi fattori che rendono tutta l'operazione empirica tipo: Identificare la velocità (di solito la si chiede all'utente, e rilevalo in automatico non sono neanche sicuro che si possa fare) le connessioni simultanee sul server che posso cambiare di continuo pertanto rallentare o velocizzare l'operazione di caricamento.
    Detto questo la domanda è ne vale la pena? Se la risposta è si cerca su google "preload in percentuale" o simili.
    Sì, capisco, ed infatti ne varrebbe la pena solo se trovassi un modo semplice per implementare questa funzione nello script suddetto, anziché usare un altro script di preload in percentuale. Questo perché dopo molte ricerche ho trovato solo questo script che fa al caso mio e che funziona su tutti i browser. Cmq, preciso che non mi interessa tanto la "fedeltà" empirica del valore di caricamento, ma solo la possibilità di visualizzarlo nella finestra di messaggio.


    Per eliminare questo disagio puoi impostare un cookie (per info sui cookie vedi discussioni utili nella pagina iniziale di questo forum) nello script che funzionerà in questa maniera: Leggo se esiste il cookie se non esiste lo creo e lo imposto in on e faccio partire il preload se esiste non faccio partire il preload, questo in sintesi.
    Una bella soluzione. Riguardo alle discussioni utili, immagino tu ti riferisca a questa. Tuttavia, gli script lì citati mi sembrano un po' troppo complessi e non adatti alle mie esigenze specifiche.
    Ho, però, trovato quest'altro script: Scripting Cookie per gestire gli eventi.
    Per comodità lo riporto qui:

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    // Prelevato su http://www.web-link.it
    function ScanCookie(variable)
    	{
    	cook = document.cookie;
    	variable += "=";
    	place = cook.indexOf(variable,0);
    	if (place <= -1)
    		return("0");
    	else
    		{
    		end = cook.indexOf(";",place)
    		if (end <= -1)
    			return(unescape(cook.substring(place+variable.length,cook.length)));
    		else
    			return(unescape(cook.substring(place+variable.length,end)));
    		}
    	}
    
    function CreationCookie(nom,valeur,permanent)
    	{
    	if(permanent)
    		{
    		dateExp = new Date(2020,11,11);
    		dateExp = dateExp.toGMTString();
    		ifpermanent = '; expires=' + dateExp + ';';
    		}
    	else
    		ifpermanent = '';
    	document.cookie = nom + '=' + escape(valeur) + ifpermanent;
    	}
    
    if(ScanCookie("web-link")==0)
    	{
    	window.alert("ciao, non hai ancora il cookie");
    	CreationCookie("web-link","oui",false)
    	}
    
    // -->
    </script>
    Laddove è scritto che basta sostituire la stringa in rosso per personalizzare l'evento:

    if(ScanCookie("web-link")==0)
    {

    window.alert("ciao, non hai ancora il cookie");
    CreationCookie("web-link","oui",false)
    }


    Ora, tornando allo script iniziale del preload della pagina che io uso e che riporto...

    codice:
    <script type="text/javascript">
    
    
    <!-- Begin
    function loadImages() {
    if (document.getElementById) {  // DOM3 = IE5, NS6
    document.getElementById('hidepage').style.visibility = 'hidden';
    }
    else {
    if (document.layers) {  // Netscape 4
    document.hidepage.visibility = 'hidden';
    }
    else {  // IE 4
    document.all.hidepage.style.visibility = 'hidden';
          }
       }
    }
    //  End -->
    </script>
    ...e che viene richiamato col seguente comando nel body...

    codice:
    <body OnLoad="loadImages()">
    ...con, sempre nel body, il mio div personalizzato tramite css (ma vi aggiungerò anche un'animazione gif)...

    codice:
    <div id="hidepage">
          Attendere... Caricamento della pagina in corso.
        </div>
    ...Mi chiedo se lo script dei cookie è integrabile allo script del preload, semplicemente sostituendo la funzione javascript. Ma io non so quale. Ad esempio, loadImages() al posto di window.alert ???

    Come detto, purtroppo il javascript non è il mio campo...

    Poi, un'altra domanda: poiché tutto questo codice inserito fra i tag HEAD del mio html crea un po' di affollamento e disordine, si può utilizzare lo scripting dei cookie citato facendolo come js esterno?


    Ciao e benvenuto sul forum
    Grazie a te per la risposta e per il benvenuto.
    alvin68
    "...un alieno su questa terra"

  4. #4
    Mi è venuta un'idea per utilizzare lo script dei cookie citato, gestendo l'evento riferito al mio div "hidepage" come funzione per mostrare lo stesso div dopo che l'ho nascosto di default tramite CSS.

    Cioè:

    1) ho impostato di default su "nascosto" il div della finestra di messaggio del preload, nel mio CSS:
    codice:
    #hidepage {
    	display: none;
    }
    2) poi ho inserito nel mio html, fra i tag head, la funzione javascript per manipolare il div:
    codice:
       
    <script type="text/javascript">
    function show() {
    document.getElementById('hidepage').style.display='block';
    }
    </script>
    3) ho creato un js esterno dello script dei cookie, chiamato "cookie.js", il cui contenuto è il seguente:
    codice:
    /*
    Gestione degli eventi tramite Cookie
    SCRIPT EDITE SUR L'EDITEUR JAVASCRIPT
    http://www.editeurjavascript.com
    */
    function ScanCookie(variable)
    	{
    	cook = document.cookie;
    	variable += "=";
    	place = cook.indexOf(variable,0);
    	if (place <= -1)
    		return("0");
    	else
    		{
    		end = cook.indexOf(";",place)
    		if (end <= -1)
    			return(unescape(cook.substring(place+variable.length,cook.length)));
    		else
    			return(unescape(cook.substring(place+variable.length,end)));
    		}
    	}
    
    function CreationCookie(nom,valeur,permanent)
    	{
    	if(permanent)
    		{
    		dateExp = new Date(2020,11,11);
    		dateExp = dateExp.toGMTString();
    		ifpermanent = '; expires=' + dateExp + ';';
    		}
    	else
    		ifpermanent = '';
    	document.cookie = nom + '=' + escape(valeur) + ifpermanent;
    	}
    
    if(ScanCookie("web-link")==0)
    	{
    	function show()
        {
        document.getElementById('hidepage').style.display = 'block';
        }
    	CreationCookie("web-link","oui",false)
    	}
    js che, ovviamente, è richiamabile dal mio html con la stringa:
    codice:
    <script type="text/javascript" src="tlscripts/cookie.js"></script>
    Tuttavia, non funziona

    Il problema deve essere nella parte del js dei cookie modificata:

    if(ScanCookie("web-link")==0)
    {

    function show()
    {
    document.getElementById('hidepage').style.display = 'block';
    }

    CreationCookie("web-link","oui",false)
    }


    corrispondente appunto alla funzione per mostrare il div originariamente nascosto. Praticamente, il div del messaggio del preload rimane nascosto...
    Eppure, per quel poco che so, la sintassi dello script mi sembra corretta.

    Qualcuno mi può aiutare a capire dove sbaglio?
    alvin68
    "...un alieno su questa terra"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.