2013-09-21 15 views
10

gescrollt ich die html2canvas Bibliothek verwenden, mit dem folgenden Code:On in Html2Canvas macht, wird die Seite nach oben

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

Wenn onrendered abgefeuert wird, wird die Seite nach oben automatisch durchgeblättert. Können wir trotzdem unsere Scroll-Position beibehalten und werden nicht automatisch an den Anfang der Seite gebracht?

+0

sehen aus wie die gleiche Sache hier auf der Demo-Seite passiert: http://html2canvas.hertzen.com/examples. html können Sie den scrolltop vor dem Aufruf von html2canvas speichern und im onrendered handler wieder setzen? –

Antwort

19

habe ich einen Blick in die html2canvas.js und sah die folgende Zeile:

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

Nach window.scroll(0,0) heraus zu kommentieren, es funktionierte für mich auf meinem lokalen Test gut. Scheint so, als ob das Verhalten vom Autor beabsichtigt war.

Natürlich können Sie Ihre aktuelle Bildlaufposition auch in eine Variable speichern, wenn Sie den Code auslösen. Wie Sie dies tun können, hängt davon ab, wie Sie html2canvas ausführen. Wenn es wie auf der Demo-Seite eine Schaltfläche, würden Sie einen Ereignis-Listener diese Schaltfläche hinzu:

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

Das ist fantastisch, ich habe diese Linie auch gleich nach der Veröffentlichung meiner Bounty entdeckt. Es gehört alles dir, sobald ich es belohnen kann :). Danke für Ihre Hilfe. – mattytommo

+0

Ich bin froh, dass ich helfen konnte. Vielen Dank! =) – SVSchmidt

+0

Perfekt! Vielen Dank. – lwdthe1

Verwandte Themen