скриншот экрана с html2canvas

35
11 июля 2018, 10:40

Проблема в том, что html2canvas делает скриншот всего селектора (в данном случа это body), который указан. А как сделать так, чтобы был только скриншот той части страницы, которая видна экране? Если указать ширину и высоту, соответствующую размеру экрана, то получается скриншот верхней части страницы, размером с экран. Надеюсь, что понятно изложил суть проблемы. Хелп :)

$("#scrShot").click(function(){
  html2canvas($("body"), {
    //width: document.documentElement.clientWidth,
    //height: document.documentElement.clientHeight,
    onrendered: function(canvas) {
      var myImage = canvas.toDataURL();
      window.open(myImage);
    }
  });
});

P.S. в идеале еще бы этот скриншот сразу открыть в canvas для редактирования. Но это пока второстепенно.

Answer 1

Все, разобрался. В новой версии html2canvas имеется возможность опционально задать величину прокрутки (y: value), указывающую на смещение по оси Y. В итоге просто перед выполнением функции нужно получить значение var scrollFromTop = window.pageYOffset, а затем на эту же величину прокрутить экран при выполнении функции:

html2canvas(document.body, {
    width:document.documentElement.clientWidth,
    height: document.documentElement.clientHeight+scrolledFromTop,
    y: scrollFromTop,
        }).then(function(canvas) {
            //некоторый код
});
READ ALSO
Переменная имеет разные значения

Переменная имеет разные значения

Имеется код который с каким-то промежутком вызывается по CRON

31
Отследить открытие pop-up окна

Отследить открытие pop-up окна

Задача такая, пишу скрипт для сайта по сбору баллов, на котором по клику открывается pop-up окно с ютуб видеоМне надо как-то отследить его открытие...

49
Скрипт срабатывает только один раз на событие click

Скрипт срабатывает только один раз на событие click

Этот скрипт срабатывает один разПри клике кнопка блокируется

57
Событие “mousemove” не срабатывает

Событие “mousemove” не срабатывает

Надо, чтобы падающие черточки разлетались при наведении мыши

26