Javascript HTML5画布在完成渲染时是否会发出事件?

Javascript HTML5画布在完成渲染时是否会发出事件?,javascript,html,canvas,Javascript,Html,Canvas,我现在正在使用移动浏览器,尝试使用PDF.JS在浏览器中呈现PDF文件。它工作得很好,但我需要在PDF文件上渲染渐变以隐藏一些内容,我不知道如何确定画布何时完成对PDF的渲染,因此我设置了3秒的超时,然后运行“回调”。这并不漂亮,我认为这可能是上述问题的原因,因为: 这个问题根本不会发生在桌面浏览器上 如果我不渲染渐变,这个问题就不会发生在手机上 所以我的结论是,出于某种奇怪的原因,如果在PDF完成渲染之前渲染渐变,画布就会“变形” 因此,我需要为查看器的渲染操作附加一个回调函数,但我严重怀

我现在正在使用移动浏览器,尝试使用PDF.JS在浏览器中呈现PDF文件。它工作得很好,但我需要在PDF文件上渲染渐变以隐藏一些内容,我不知道如何确定画布何时完成对PDF的渲染,因此我设置了3秒的超时,然后运行“回调”。这并不漂亮,我认为这可能是上述问题的原因,因为:

  • 这个问题根本不会发生在桌面浏览器上
  • 如果我不渲染渐变,这个问题就不会发生在手机上
所以我的结论是,出于某种奇怪的原因,如果在PDF完成渲染之前渲染渐变,画布就会“变形”

因此,我需要为查看器的渲染操作附加一个回调函数,但我严重怀疑这种函数是否存在于这个文档记录不充分(但大部分工作正常)的库中

HTML5画布在完成渲染时是否会发出事件?如果没有,是否有任何解决方案可以确保画布的渲染完成?

不,没有。
画布或it上下文不知道它们实际发生了什么(/正在绘制)


您必须“向查看器的渲染操作附加回调。”

仅供参考,结果证明我错了,而且(我认为这是最近的变化?)PDF JS库由Mozilla托管并在本机集成。因此,很自然地,它们位于API之上,具有几乎所有功能(尽管是文档“格式”,对经验丰富的软件工程师来说更为重要,以代码形式),并且在此处实现了为页面渲染操作完成附加事件处理程序的方法:

并在此处访问:


触发一个事件,
pagerendered

用户代码中没有“已完成渲染”这样的内容。能否提供一个代码示例?也许我们可以帮助您找到一种附加回调的简单方法。@Cerburs感谢您提供的帮助,但是库的开发人员比您更快地完成了它,令人印象深刻的是,请参阅我的自我回答。请注意如何实现您的建议。画布上下文(CanvasRenderingContext2D)有相对较少的方法导致缓冲上下文呈现到显示中:
笔划、填充、drawImage、strokeText&fillText、Strokert&fillRect
。您可以很容易地修改canvasrendingcontext2d.prototype来包装这些方法并添加回调。@markE:当然可以,但我建议不要这样做。确定最后一个调用是什么,以便执行回调将是。。。凌乱。同意,在提问者的代码中适当的位置放置函数调用更干净。我刚刚添加了注释,因为OP询问如何使用事件系统