[Javascript] Sistema di caricamento dinamico in base allo scrolling

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Ciao, dovrei ricreare un sistema di caricamento dinamico per un sito di immagini e ho pensato di legarlo allo scrolling, così come avviene in molti siti.
Di per se non è complicatissimo, ho pensato a qualche cosa del genere:
Codice:
$(document).ready(function()
{
  var limit = 1, scroll = $(elemento contenitore).height();
  $('elemento contenitore').on( 'scroll', function()
  {
    if ( $(document).scrollTop() > scroll )
    {
      scroll = scroll + 100;  //  Aumento il prossimo limite di scroll
      $('elemento contenitore').load( 'funzione.php', {id: limit}, function()
      { 
         ... qui il caricamento dinamico del resto della pagina ... 
         limit = limit + 10;  //  Limite per la query sql.
      });
    }
  };
});
E' solo una bozza!
Limit contiene il limite per la prima query che deve scaricarmi un'altra parte del database ( mettiamo thread di un forum come questo ), scroll parimenti il limite di pagina da cui partire con lo scaricamento del prossimo blocco di thread, ovvero, se scrollando l'utente arriva alla fine schermo, parte la richiesta ajax.
Scroll viene incrementato di un valore ( quanto? Io ho messo arbitrariamente 100px ma c'è la possibilità di scoprire un valore dinamico valido? Non tutti i dispositivi sono uguali ), questo nuovo valore sarà ogni volta il nuovo punto di scarico, che oltre a scaricare dal database aumenta il limit di un certo valore.
Devo mettere un fine, o posso semplicemente tralasciare e verificare la fine del database tamite PHP/MySQL? Credo che qust'ultima opzione sia la migliore, ma comunque mi piacerebbe, una volta arrivati a fine database, comunque di non incrementare ulteriormente lo scroll.
A tal proposito ho scoperto leggendo la documentazione di jquery, che c'è la possibilità di staccare l'evento specifico con $('elemento').off( 'scroll' ); ( per questo non ho usato lo short hand nel codice ;) )
Anzi, trovare un modo per evitare, se l'utente risale in cima, di ricominciare a scaricare anche quello che ha già scaricato, la banda mensile costa ed è limitata!
A tal proposito pensavo che la variabile globale limit possa funzionare allo scopo; quello che è stato scaricato ha anche un preciso limit e quindi scarica solo dal nuovo limit!
Complicato? Sì, forse, bo!
Idee? :D
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Aggiornamento :p
Sto cercando qua e là e ho più confusione ora di quando son partito, comunque per risolvere il problema del punto di scrolling dal quale far partire il caricamento, forse ho risolto così:
Codice:
$( window ).on( "scroll", function() {
   var currentTop = $( this ).scrollTop(),
       elementTop = $( "#arrivo" ).offset().top;
       
       if( currentTop >= elementTop ) {
           // Azione
       }

});
HTML:
....
pagina
....
<section id="contenitore">
  <article>Bla bla bla</article>
  <article>Foo foo foo</article>
  <article>Bar bar bar</article>
  ...
  <div id="arrivo"></div>
</section>
In pratica, quando faccio lo scrolling della pagina, arrivo al div#arrivo e a quel punto entro nel selettore identificato dal remark // Azione e da li carico dinamicamente dentro section#contenitore un nuovo gruppo di articoli. Ovviamente dopo l'ultimo articolo caricato :D
Rimangono parecchie cose da vedere, tipo cosa succede se torno in su e poi in giù nella pagina?
L'idea per evitare che l'azione di scaricamento si ripeta è quello di usare un meccanismo di cache, ma forse, e per ora dico forse, risalendo nella pagina si è fatto scendere l'elemento div#arrivo e quindi fino a quando non scrollo ancora oltre quel punto non dovrebbe riscaricarmi nulla, bo, non so, bisogna che faccia delle prove.
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
W [Javascript] Eseguire script residente nel sistema da html remota Javascript 0
O sistema protezione password con javascript Javascript 9
cosov sistema per tornare indietro senza usare Javascript Classic ASP 1
I Creare un banner temporaneo JavaScript Javascript 0
S Impossibile scorrere un oggetto in JavaScript Javascript 0
N Passare array da php a javascript PHP 5
L Quiz javascript funzionante da migliorare Javascript 0
P errore 404 con javascript Javascript 2
D aiuto funzioni javascript Javascript 1
M Upload immagine con javascript problemi con FormData() Javascript 1
L countdown multiplo javascript Javascript 1
S Problemi Javascript + Aruba Javascript 2
M Inviare un file su un server remoto con JavaScript Javascript 0
T a href="javascript:;" Javascript 1
F Creare elementi html con javascript Javascript 3
A pulsante di update campo mysql con javascript Javascript 2
8 Javascript - PDF Form Javascript 0
B javascript per problemi con pdf e Safari Javascript 0
N informazione javascript Programmazione 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
P javascript:document.forms Javascript 7
S Consiglio esercizio Javascript Javascript 2
MarcoGrazia Aggiungere o rimuovere classi in javascript Javascript 1
P Passaggio id php a javascript PHP 6
R Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript PHP 0
E lettura da un Database con Javascript jQuery 2
V TRIS in javascript Javascript 1
IClaude Funzione Javascript Javascript 8
Alex_70 Javascript date color Javascript 3
F Convertire JavaScript per la compatibilità nei browser obsoleti Javascript 0
I Passare dei parametri in javascript PHP 0
Shyson Meglio Javascript o HTML? Javascript 4
G Problema verifica palindromo e verifica pari e dispari javascript Javascript 0
M Chiamare pagina php da javascript Javascript 8
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
D Javascript per il download dei dati Javascript 0
grgfede Problema javascript con aruba Javascript 1
R Cerco supporto in programmazione javascript Offerte e Richieste di Lavoro e/o Collaborazione 0
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
I javascript come caricare una pagina sopra quella corrente in automatico Javascript 2
L [Javascript] Problema salvataggio dati in db Javascript 1
max1974 [Javascript] Grafico chartjs con dati da J.ajax Javascript 3
G Quiz Javascript Javascript 4
A [Javascript] Scrittura su più campi contemporaneamente Javascript 18
F classic asp popolare combo box javascript Presentati al Forum 1
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
F [Javascript] comando innerHTML non funziona Javascript 5
alexice51 proggrammi per scrivere in javascript? Javascript 3

Discussioni simili