如何使用 javascript 知道图像是否已加载

发布于 2024-12-09 04:19:53 字数 454 浏览 0 评论 0原文

我正在编写一个显示相册的网站,该页面正在加载拇指并在每张图片完全加载之前在它们上应用白色叠加层。

我在本地编写了这个代码,效果很好。 但是在我的服务器上上传文件并加载页面会带来一些显示错误,一些白色覆盖层不会淡出,因为 jQuery load 函数没有被触发,因为图像在脚本加载和应用之前加载。

解决方案是仅对执行 jQuery 脚本时仍在加载的图像应用白色覆盖。

我的问题是如何知道页面中的特定元素是否仍在获取或已完全呈现在屏幕上?

注意:这是页面http://www.benjamindegenne。 com/portfolio/numeric/upper-playground/

I'm coding a website that displays picture albums, the page is loading the thumbs and applies white overlays on each picture before they are fully loaded.

I coded this in local and it works fine.
But uploading the files on my server and loading the page brings few errors of display, some white overlay are not fading out because the jQuery load function is not triggered since images load before the script is loaded and being applied.

The solution would be to apply white overlay only on images that are still loaded when the jQuery script is being executed.

My question is how to know if a specific element in the page is still being fetched or has completely been rendered on the screen ?

NOTE : here's the page http://www.benjamindegenne.com/portfolio/numeric/upper-playground/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹微笑 2024-12-16 04:19:53

更新

之前的解决方案是不正确的。 (感谢@donut)。

这是使用 jQuery 执行此操作的另一种简单方法 -

$(function() {
    $("<img src='img_01.jpg' />").load(function() {
        // Image img_01.jpg has been loaded
    });
});


JavaScript

在 JavaScript 中使用图像预加载 -

img1 = new Image();
img1.src = "image.jpg";
// at this line image.jpg has been loaded

img1.src = "image.jpg"; 之后,您可以确保图像已加载,并且您可以编写您的业务逻辑

jQuery

这是一个简单的 jQuery 插件来完成此操作 -

// image preloading plugin
$.fn.preload = function () {
    this.each(function () {
        $('<img/>')[0].src = this;
        // at this line "this" image has been loaded
    });
};

示例用法 -

var imagesToPreload = ["img01.jpg", "img02.jpg", "img03.jpg"];
imagesToPreload .preload();
// at this line all images has been loaded

Updates

The previous solution was incorrect. (Thanks to @donut).

Here is alternative simple way to do this using jQuery -

$(function() {
    $("<img src='img_01.jpg' />").load(function() {
        // Image img_01.jpg has been loaded
    });
});


JavaScript

Use Image pre-loading in JavaScript -

img1 = new Image();
img1.src = "image.jpg";
// at this line image.jpg has been loaded

After img1.src = "image.jpg";, you can assure that image has been loaded and you can write your business logic

jQuery

Here is a simple jQuery plugin to accomplish this -

// image preloading plugin
$.fn.preload = function () {
    this.each(function () {
        $('<img/>')[0].src = this;
        // at this line "this" image has been loaded
    });
};

Sample usage -

var imagesToPreload = ["img01.jpg", "img02.jpg", "img03.jpg"];
imagesToPreload .preload();
// at this line all images has been loaded

山有枢 2024-12-16 04:19:53

https://github.com/desandro/imagesloaded - 图像加载 jQuery 插件将为您做到这一点; -)

https://github.com/desandro/imagesloaded - images loaded jQuery plug in will do that for you ;-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文