2012-10-05 18 views
5

Sto inviando alcuni dati al mio database, quindi ricarico la stessa pagina di quando l'utente era solo su, mi chiedevo se c'è un modo per ricordare la posizione di scorrimento che l'utente era solo su?come ricordare la posizione di scorrimento della pagina

+1

E i cookies? – VisioN

+0

memorizza la posizione di scorrimento corrente nel cookie, riutilizzandola in seguito durante il caricamento della pagina –

risposta

15

mi sono reso conto che avevo perso la parte importante di invio, quindi, ho deciso di modificare il codice per memorizzare il cookie sull'evento click anziché il modo originale di memorizzarlo durante lo scorrimento.


Ecco un modo jquery di farlo:

jsfiddle (Basta aggiungere /show alla fine della URL se si desidera visualizzare al di fuori dei telai)

Molto importante, Avrò bisogno del jquery cookie plugin.

jQuery:

// When document is ready... 
$(document).ready(function() { 

    // If cookie is set, scroll to the position saved in the cookie. 
    if ($.cookie("scroll") !== null) { 
     $(document).scrollTop($.cookie("scroll")); 
    } 

    // When a button is clicked... 
    $('#submit').on("click", function() { 

     // Set a cookie that holds the scroll position. 
     $.cookie("scroll", $(document).scrollTop()); 

    }); 

}); 


Ecco ancora il codice della risposta originale:

jsfiddle

jQuery:

// When document is ready... 
$(document).ready(function() { 

    // If cookie is set, scroll to the position saved in the cookie. 
    if ($.cookie("scroll") !== null) { 
     $(document).scrollTop($.cookie("scroll")); 
    } 

    // When scrolling happens.... 
    $(window).on("scroll", function() { 

     // Set a cookie that holds the scroll position. 
     $.cookie("scroll", $(document).scrollTop()); 

    }); 

}); 

@ La risposta di Cody mi ha ricordato qualcosa di importante.

L'ho fatto solo per controllare e scorrere fino alla posizione in verticale.

+0

bam! ha funzionato alla perfezione, ha aggiunto solo quello che avevo nel mio codice e ha funzionato all'istante :) grazie mille. – HurkNburkS

+0

Probabilmente da quando sono su jQuery v1.5.1 (?), Ho dovuto usare questa variante per farlo funzionare: $ (window) .scroll (function() {// set cookie}); – fiat

+0

@fiat Sì. Il metodo '.on()' è stato aggiunto in jquery 1.7. – Joonas

0

Bene, se usi _targets nel tuo codice puoi salvarlo.

Oppure, è possibile eseguire una richiesta Ajax per ottenere la finestra. Altezza.

document.body.offsetHeight; 

Poi li goccia posteriore, danno la variabile da javascript e spostare la pagina per loro.

4

(1) Soluzione 1:

primo luogo, ottenere la posizione di scorrimento da JavaScript quando si fa clic sul pulsante di invio.

In secondo luogo, includere questo valore di posizione di scorrimento nei dati inviati alla pagina PHP.

In terzo luogo, il codice PHP dovrebbe scrivere di nuovo questo valore in HTML generato come una variabile JS:

<script> 
var Scroll_Pos = <?php echo $Scroll_Pos; ?>; 
</script> 

In quarto luogo, utilizzare JS per scorrere fino a posizione specificata dalla variabile JS 'Scroll_Pos'

(2) Soluzione 2:

Salvare la posizione in cookie, quindi utilizzare JS per scorrere fino alla posizione salvata quando la pagina viene ricaricata.

+1

ok grazie .. andando a dover fare un sacco di ricerche allora .. abbastanza abit in più di quanto mi aspettassi. – HurkNburkS

3

Memorizzare la posizione in un campo nascosto.

<form id="myform"> 
    <!--Bunch of inputs--> 
</form> 

che con jQuery memorizzare lo scrollTop e scrollLeft

$("form#myform").submit(function(){ 
    $(this).append("<input type='hidden' name='scrollTop' value='"+$(document).scrollTop()+"'>"); 

    $(this).append("<input type='hidden' name='scrollLeft' value='"+$(document).scrollLeft()+"'>"); 
}); 

che sul prossimo aggiornamento della pagina fare un redirect o stamparli con PHP

$(document).ready(function(){ 
    <?php 
     if(isset($_REQUEST["scrollTop"]) && isset($_REQUEST["scrollLeft"])) 
     echo "window.scrollTo(".$_REQUEST["scrollTop"].",".$_REQUEST["scrollLeft"].")"; 
    ?> 
}); 
Problemi correlati