<p>Обещание html2canvas возвращено до завершения рендеринга</p>

Созданный на 1 окт. 2019  ·  3Комментарии  ·  Источник: niklasvh/html2canvas

Убедитесь, что вы тестируете последнюю версию html2canvas .
Старые версии не поддерживаются, и проблемы, о которых сообщалось, будут закрыты.

Сначала выполните общие шаги по устранению неполадок:

  • [X] Вы используете последнюю версию
  • [X] Вы тестируете неминифицированную версию html2canvas и проверяете любые потенциальные проблемы, о которых сообщается в консоли.

Отчеты об ошибках:

У меня есть страница с несколькими div. Каждый из этих div имеет несколько элементов таблицы реакции . Я хочу сделать снимок экрана каждого div, а затем создать zip-файл и загрузить их все сразу (как своего рода слайд-колода псевдо PowerPoint). Это отлично работает на Mac, однако, когда я использую Google Chrome в Windows, кажется, что div с несколькими таблицами реагирования не завершает рендеринг, когда делается снимок экрана. Включив ведение журнала, я подтвердил, что рендеринг завершается через ~ 1000 мсек, но canvas , возвращаемое html2canvas, выглядит так, как если бы рендеринг не завершился. Реагирующие таблицы отображаются, но остальной текст на странице несколько прозрачен, как если бы он был загружен наполовину.

У меня еще нет репро jsfiddle, но я буду работать над этим, чтобы добавить его сюда.

Характеристики:

  • Версия html2canvas протестирована с помощью:
  • Браузер и версия: последняя версия Chrome - 77.0.3865.90
  • Операционная система: Windows (важно, не может воспроизводиться на Mac)

Самый полезный комментарий

Я также столкнулся с этой проблемой, и с нашей стороны это вызвало довольно серьезную ошибку. Хотелось бы починить!

Все 3 Комментарий

Мне удалось заставить это работать, хотя это не оптимально.

html2canvas(div, {
    letterRendering: true,
    onclone: (doc) => {
        // onclone logic to resize div

        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve()
            }, 400)
        })
    }
}).then((obj) => {
    let img = obj.toDataURL()
    // save image to zip file
})

Я пришел к таймауту 400 мс методом проб и ошибок. Что-то меньшее, и я заметил, что div не полностью отображается, когда html2canvas делает снимок экрана.

Я согласен, у меня была очень похожая проблема, когда изображения, созданные Html2Canvas, обрезались. Это происходило только в производственных сборках. В среде разработки все работало нормально. Обход выше решает мою проблему. Я согласен с тем, что это не идеально, и для этого необходимо правильное исправление, но на данный момент это решает мою проблему. Спасибо @ tjchambers32 за этот

Я также столкнулся с этой проблемой, и с нашей стороны это вызвало довольно серьезную ошибку. Хотелось бы починить!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги