文件 v0.6.19

圖片延遲載入

本頁說明 :lazyload 如何在圖片進入視窗時才載入,以及失敗時的替代圖。

寫法

<img :lazyload="photo" />
<img :lazyload="photo" :effect="circle" />

<script>
  const app = new QUI({
    id: "app",
    data: { photo: "https://example.com/photo.jpg" },
  });
</script>
階段 行為
初始渲染 src 先設為透明佔位圖;加 :effect="circle" 時改為旋轉的載入圖示
進入視窗 IntersectionObserver 觸發,先送 HEAD 再 GET,以 blob URL 設定 src
完成後 移除 lazyload 與 effect 屬性
之後的渲染 已載入的圖片直接設定 src,不再重新觀察

未經 QuickUI 渲染、但已在頁面上帶有 lazyload="url" 屬性的 <img>,也會在監聽器建立時一併觀察。

失敗處理

情況 src
錯誤訊息為 Load failed 的 TypeError(Safari 的 CORS 失敗)或圖片 Event 直接使用原始網址
其他錯誤(含 404,以及 Chrome 等錯誤訊息不同的 CORS 失敗) https://cdn.jsdelivr.net/gh/pardnchiu/PDRenderKit@latest/static/image/404.svg

跨網域圖片請確認伺服器回傳 CORS 標頭,否則在 Chrome 中會顯示 404 替代圖。

停用

new QUI({ id: "app", option: { lazyload: false } });

停用後監聽器不會建立;此時模板中仍使用 :lazyload 會因觀察器不存在而拋出錯誤,請改用 :src。

EN