有没有一种方法可以检测到渐进式JPEG每一步的加载(或者至少是第一步)?
目前,onload()事件在最终(高质量)图像加载完成时被触发。
在Chrome 48中测试过。
有没有一种方法可以检测到渐进式JPEG每一步的加载(或者至少是第一步)?
目前,onload()事件在最终(高质量)图像加载完成时被触发。
在Chrome 48中测试过。
这方面没有相应的事件。
有一个 loadstart
事件,可以告诉你浏览器何时发出请求,但这并不意味着已经有数据了。
您可以继续轮询 .naturalHeight
属性以观察浏览器是否知道图像尺寸,这意味着它至少已经获取到了一些数据。
一个不太切实际的选择是使用 XHR/fetch 下载图像(这样可以观察下载进度),然后将部分数据设置为图像元素上的 Blob
。我在 ImageOptim API 演示页面 上使用这个技巧来演示缓慢加载渐进式图像。
另一种选择是使用 ServiceWorker
,并传递一个分块流,观察发送了多少数据。对于 JPEG 文件,您可以安全地假设文件的 15% 足以呈现可用的预览。