На рендере в Html2Canvas страница прокручивается вверх - программирование
Подтвердить что ты не робот

На рендере в Html2Canvas страница прокручивается вверх

Я использую библиотеку html2canvas, используя следующий код:

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

При запуске onrendered страница автоматически прокручивается вверх. В любом случае, мы можем сохранить нашу позицию прокрутки и не автоматически попадать в начало страницы?

4b9b3361

Ответ 1

Я просмотрел html2canvas.js и увидел следующую строку:

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

После комментирования window.scroll(0,0) out, он работал отлично для меня при локальном тестировании. Похоже, это поведение было задумано автором.

Конечно, вы можете сохранить текущую позицию прокрутки в переменной при запуске кода. Способ, которым вы можете это сделать, зависит от того, как вы выполняете 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);
       }
    });
 });

Ответ 2

Эта строка (window.scroll(0,0);) больше не доступна в версии html2canvas 1.0.0-alpha.11! любой другой обходной путь?