Выдает ли HTML5 Canvas событие, когда он завершает рендеринг?


У меня есть Проблема прямо сейчас с мобильными браузерами, пытаясь использовать PDF.JS для отображения PDF-файлов в браузере. Это работает нормально, но мне нужно сделать градиент над PDF-файлами, чтобы скрыть часть содержимого, и я не знаю, как вычислить, когда холст закончит отрисовку PDF, поэтому я устанавливаю 3-секундный тайм-аут, а затем запускаю свой "обратный вызов". Это не очень красиво, и я думаю, что это может быть причиной проблемы выше, так как:

  • проблема не происходит на десктопные браузеры вообще.
  • проблема не возникает на мобильном устройстве, если я не рендерю градиент.

Таким образом, мой вывод заключается в том, что по какой-то странной причине, если градиент будет отрисован до того, как PDF закончит отрисовку, холст "взбесится".

Итак, мне нужно прикрепить обратный вызов к операции визуализации вьювера, но я серьезно сомневаюсь, что такая функция существует в этой плохо документированной (но в основном отлично работающей) библиотеке.

Работает ли HTML5 Canvas испускать событие, когда оно завершает отрисовку? Если нет, то есть ли какое-либо решение, которое могло бы позволить мне гарантировать, что рендеринг холста завершен?

2 3

2 ответа:

Нет, это не так.
Холст или его контекст не имеют понятия, что на самом деле происходит с ними (/рисуется на них).

Вам придется "присоединить обратный вызов к операции визуализации вьювера."

Просто для справки, оказывается, что я был неправ, и (я думаю, что это было недавнее изменение?) библиотека формат PDF JS-это организованное и интегрированное изначально Мозилла. Поэтому, естественно, они находятся на вершине этого API с функциями практически для всего (хотя в "формате" документации, предназначенном больше для опытных инженеров-программистов, в форме кода), и способ прикрепления обработчика событий для завершения операции рендеринга страницы подразумевается здесь:

Https://github.com/mozilla/pdf.js/blob/master/web/pdf_viewer.js#L225

И доступ сюда:

Https://github.com/mozilla/pdf.js/blob/master/web/viewer.js#L1733

Событие, pagerendered, срабатывает.