如果能对我的惰性加载脚本有所帮助,我将不胜感激。出于我无法理解的原因,插件主滑块中的图像不会延迟加载。
我的
JavaScript
搜索具有data-src
属性的所有图像。如果图像具有该属性,则将其与常规的src
属性交换,并加载图像。如果不存在data-src
,图像将被单独保留。
在此之前,我打算使用一个
PHP
脚本来获取所有图像,并将src
与data-src
交换,因此图像无法随页面加载。
它适用于除图像滑块以外的所有内容。它是通过插件
Master Slider
实现的。
我认为问题应该出在
PHP
中,因为滑块确实加载了—只是不是惰性加载。所有src
属性都起作用,这意味着JavaScript
不使用滑块。
有人知道这是为什么吗?
PHP:
add_filter( 'the_content', 'my_lazyload_content_images' );
add_filter( 'widget_text', 'my_lazyload_content_images' );
add_filter( 'wp_get_attachment_image_attributes', 'my_lazyload_attachments', 10, 2 );
// Replace the image attributes in Post/Page Content
function my_lazyload_content_images( $content ) {
//-- Change src/srcset to data attributes.
$content = preg_replace( '/(<img.+)(src)/Ui', '$1data-$2', $content );
$content = preg_replace( '/(<img.+)(srcset)/Ui', '$1data-$2', $content );
//-- Add .lazy-load class to each image that already has a class.
$content = preg_replace('/<img(.*?)class=\"(.*?)\"(.*?)>/i', '<img$1class="$2 lazy-load"$3>', $content);
//-- Add .lazy-load class to each image that doesn't already have a class.
$content = preg_replace('/<img((.(?!class=))*)\/?>/i', '<img class="lazy-load"$1>', $content);
return $content;
}
// Replace the image attributes in Post Listing, Related Posts, etc.
function my_lazyload_attachments( $atts, $attachment ) {
$atts['data-src'] = $atts['src'];
unset( $atts['src'] );
if( isset( $atts['srcset'] ) ) {
$atts['data-srcset'] = $atts['srcset'];
unset( $atts['srcset'] );
}
return $atts;
}
JavaScript:
let lazyImgs = document.querySelectorAll("img[data-src]");
function lazyLoad(lazyImgs) {
const imgOptions = {
threshold: 0.25,
rootMargin: "0%",
};
const imgObserver = new IntersectionObserver((entries, imgObserver) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0) {
// get currently intersecting picture element and its children (source, img)
let lazyImage = entry.target;
// check if the element really has the attribute data-src, which we're using for lazy loading
// if it doesn't leave the image alone
if (lazyImage.hasAttribute("data-src")) {
// exchange the src
lazyImage.src = lazyImage.dataset.src;
// also exchange the src, if the image has one
if (lazyImage.srcset) {
lazyImage.srcset = lazyImage.dataset.srcset;
}
} else {
return false;
}
lazyImage.classList.add('is-loaded');
// end observation of image once it's loaded :)
imgObserver.unobserve(lazyImage);
} // end is intersecting
});
}, imgOptions);
// loop through all images and observe every single one
lazyImgs.forEach((lazyImg) => {
imgObserver.observe(lazyImg);
});
} // end lazyLoad();
lazyLoad(lazyImgs);
And the CSS:
.lazy-load {
transition: opacity .15s;
opacity: 0;
}
.lazy-load.is-loaded {
opacity: 1;
}
为什么不使用默认的html5延迟加载?
<img src="_path_to_image_" loading="lazy">
https://web.dev/native-lazy-loading/
我似乎不能为我的生活得到任何图像懒惰加载插件在wordpress工作。我尝试了懒负载,wp懒负载和bj懒负载。网站上的图像似乎没有一个是“懒惰加载”的。我也使用审计工具(chrome审计)测试了这个。当我删除图像(每页大约有50张图像)时,我的审计绩效和其他分数为99。当我加载图像(使用wordpress循环),我的性能下降到64. 我尝试了每一个延迟加载插件,但它们似乎都不是延迟加载。我正在本地
问题是:PageSpeedInsights说图像没有被延迟加载,留档说img标签应该被“data-page espeed-laily-src”属性替换(它没有这样做)。 pagespeed.conf: 超文本标记语言: 它正在转换png图像,我看到了“X-Mod-Pagespeed”标题,所以我确信模块在那里。 /pagespeed_admin显示“Lazyload Images”过滤器已启用。o
我正在使用Mika Tuupola的jQuery延迟加载。 是否可以在每次延迟加载图像后调用函数。 我打算做的是跟踪图像的浏览次数。因此,如果图像是延迟加载的,这意味着用户已经看到了图像,我将通过在后台执行HTTP GET,将数据库中的计数器增加1。
我正在使用这个插件jQuery延迟内容、图像和背景延迟加载程序 我尝试在延迟加载后向图像添加图像边框颜色和图像边框厚度,但似乎没有效果。若我在开发者控制台按“inspect”,我可以看到这个属性被添加到图像样式中,但它的效果并没有显示在屏幕上。 超文本标记语言 JQuery
我想删除Wordpress中第一个图像上的延迟加载,用于每个帖子、页面和主页。 我不使用任何插件的懒惰加载图像,我需要一个默认的懒惰加载的解决方案通过wordpress添加。 我为functions.php找到了这个脚本,但它是为WP Rocket插件找到的,我没有这个插件。 因此,我对其进行了如下修改: 现在,我只需要删除类为“aligncenter size full remove lazy”
问题内容: 我正在开发一个eshop。在基于类别的产品页面上,我放置了一些基于javascript的过滤器。但是,如果类别具有很多产品,则会出现问题。该链接具有与我相似的功能… 这个页面多么缓慢,却超过2mb !!! 对我来说,每个产品都需要一半的K字节,但是图像是个问题。.因此,我正在寻找如何延迟加载图像的方法。由于与该网站不同,我的页面具有分页功能,因此我认为加载仅对页面可见的图像是一种解决方