2013-09-21 2 views
10

Sto usando la libreria html2canvas, utilizzando il seguente codice:On rendere nel Html2Canvas, la pagina viene fatto scorrere verso l'alto

html2canvas(document.body, { 
    onrendered: function(canvas) { 
     document.body.appendChild(canvas); 
    } 
}); 

Quando onrendered viene licenziato, la pagina scorre automaticamente verso l'alto. Esiste comunque la possibilità di mantenere la posizione di scorrimento e di non essere automaticamente portati in cima alla pagina?

+0

sembra la stessa cosa accade sulla pagina demo qui: http://html2canvas.hertzen.com/examples. html sei in grado di memorizzare lo scrolltop prima di chiamare html2canvas e impostarlo nel gestore onrendered? –

risposta

19

ho preso uno sguardo nelle html2canvas.js e vide la seguente riga:

_html2canvas.Parse = function (images, options) { 
    window.scroll(0,0); 

Dopo aver commentato window.scroll(0,0) fuori, ha funzionato bene per me su mio test locale. Sembra che il comportamento fosse inteso dall'autore.

Ovviamente si può anche salvare la posizione corrente di scorrimento in una variabile quando si attiva il codice. Il modo in cui puoi farlo dipende da come esegui html2canvas. Se si tratta di un pulsante mi piace sulla pagina demo, è necessario aggiungere un listener di eventi al pulsante:

var scrollPos; 
document.querySelector("screenshotButton").addEventListener("click",function() { 
    scrollPos = document.body.scrollTop; 
    html2canvas(document.body, { 
     onrendered: function(canvas) { 
      document.body.appendChild(canvas); 
      window.scrollTo(0,scrollPos); 
     } 
    }); 
}); 
+0

È fantastico, ho notato quella linea anche dopo che ho pubblicato la mia taglia. È tutto tuo non appena posso ricompensarlo :). Grazie per l'aiuto. – mattytommo

+0

Sono felice di poterti aiutare. Grazie! =) – SVSchmidt

+0

Perfetto! Grazie. – lwdthe1