2013-09-21 36 views
10

我現在用的是html2canvas庫,使用下面的代碼:在渲染Html2Canvas,頁面滾動到頂部

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

onrendered被觸發時,頁面會自動滾動到頂部。無論如何,我們可以保持我們的滾動位置,而不是自動進入頁面頂部?

+0

看起來像同樣的事情發生在演示頁面在這裏:http://html2canvas.hertzen.com/examples。 html是否可以在調用html2canvas之前存儲scrolltop並將其放回到渲染處理程序中? –

回答

19

我接過來一看進入html2canvas.js,看到下面一行:

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

評論window.scroll(0,0)出來後,它在我的本地測試工作對我罰款。似乎這種行爲是由作者打算的。

當然,您也可以在觸發代碼時將當前滾動位置保存到變量中。你可能會這樣做的方式取決於你如何執行html2canvas。如果它像演示頁面上的一個按鈕,你會添加事件偵聽到該按鈕:

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

這真是太棒了,我在發佈我的賞金之後發現了這條線。只要我能獎勵它,這些都是你的。謝謝你的幫助。 – mattytommo

+0

我很高興能幫上忙。謝謝! =) – SVSchmidt

+0

完美!謝謝。 – lwdthe1