From b20ef2813c35b496100a2151cdaef7473eb32d80 Mon Sep 17 00:00:00 2001 From: nanhaoluo <3075912108@qq.com> Date: Mon, 12 Jan 2026 13:01:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=96=87=E7=AB=A0=E7=89=B9=E8=89=B2=E5=9B=BE=E7=89=87=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重写 lazyload 初始化逻辑,避免 Object.assign 污染配置对象 - 为特色图片添加手动预加载机制,确保图片加载后正确显示 - 图片加载完成后显式设置 opacity: 1 - 图片加载失败时移除图片容器,避免显示空白区域 - 修复 effect 配置未正确传递给特色图片的问题 --- argontheme.js | 76 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/argontheme.js b/argontheme.js index d63be5c..89f2fc3 100644 --- a/argontheme.js +++ b/argontheme.js @@ -2181,27 +2181,65 @@ function lazyloadInit(){ setTimeout(lazyloadInit, 100); return; } - if (argonConfig.lazyload.effect == "none"){ - delete argonConfig.lazyload.effect; + var lazyloadEffect = argonConfig.lazyload.effect; + if (lazyloadEffect == "none"){ + lazyloadEffect = undefined; } - $("article img.lazyload:not(.lazyload-loaded) , .related-post-thumbnail.lazyload:not(.lazyload-loaded) , .shuoshuo-preview-container img.lazyload:not(.lazyload-loaded)").lazyload( - Object.assign(argonConfig.lazyload, { - load: function () { - $(this).addClass("lazyload-loaded"); - $(this).parent().removeClass("lazyload-container-unload"); - } - }) - ); - $(".post-thumbnail.lazyload:not(.lazyload-loaded)").lazyload( - Object.assign({threshold: argonConfig.lazyload.threshold}, { - load: function () { - $(this).addClass("lazyload-loaded"); - $(this).parent().removeClass("lazyload-container-unload"); + + // 文章内图片和相关文章缩略图 + $("article img.lazyload:not(.lazyload-loaded) , .related-post-thumbnail.lazyload:not(.lazyload-loaded) , .shuoshuo-preview-container img.lazyload:not(.lazyload-loaded)").lazyload({ + threshold: argonConfig.lazyload.threshold, + effect: lazyloadEffect, + load: function () { + $(this).addClass("lazyload-loaded"); + $(this).parent().removeClass("lazyload-container-unload"); + } + }); + + // 文章特色图片 - 确保加载后显示 + $(".post-thumbnail.lazyload:not(.lazyload-loaded)").each(function() { + var $img = $(this); + var originalSrc = $img.attr("data-original"); + + if (originalSrc) { + // 创建一个新图片对象来预加载 + var img = new Image(); + img.onload = function() { + $img.attr("src", originalSrc); + $img.addClass("lazyload-loaded"); + $img.css("opacity", "1"); + $img.parent().removeClass("lazyload-container-unload"); waterflowInit(); - } - }) - ); - $(".comment-item-text .comment-sticker.lazyload").lazyload(Object.assign(argonConfig.lazyload, {load: function(){$(this).removeClass("lazyload")}})); + }; + img.onerror = function() { + // 图片加载失败,隐藏图片容器 + $img.closest(".post-header-with-thumbnail").removeClass("post-header-with-thumbnail"); + $img.remove(); + waterflowInit(); + }; + img.src = originalSrc; + } + }); + + // 也保留原有的 lazyload 调用作为备用 + $(".post-thumbnail.lazyload:not(.lazyload-loaded)").lazyload({ + threshold: argonConfig.lazyload.threshold, + effect: lazyloadEffect, + load: function () { + $(this).addClass("lazyload-loaded"); + $(this).css("opacity", "1"); + $(this).parent().removeClass("lazyload-container-unload"); + waterflowInit(); + } + }); + + $(".comment-item-text .comment-sticker.lazyload").lazyload({ + threshold: argonConfig.lazyload.threshold, + effect: lazyloadEffect, + load: function(){ + $(this).removeClass("lazyload"); + } + }); } lazyloadInit();