使用 jQuery 异步加载外部图像

发布于 2024-10-06 02:21:00 字数 852 浏览 6 评论 0原文

我遇到以下情况

我需要加载由第 3 方托管的多个外部图像,示例网址如下;

http://externaldomain.com/img/a/b/someimage.jpg

然而,加载 1 张图像可能需要长达 15 秒的时间! (我知道这很疯狂),所以我想使用 jQuery 异步加载这些图像。这就是我陷入困境的地方,我尝试了以下两种方法:

var img = new Image();            
$(img).load(function () {                                
    containerForImg.removeClass('loading-image').append(this);
})

.attr('src', imgFullPath)   
.attr('alt', imgAltText); 

我认为上面的代码不会异步加载图像,因为请求在完成之前一直等待所有图像。

第二种方法

我创建了一个通用处理程序 (.ASHX),用于使用 .NET 中的 WebRequestWebResponse 类下载图像,并使用 $.ajax()< 调用此处理程序/code> jQuery 方法,但是如果有大量图像,这会导致屏幕无响应。我可以确认对处理程序的请求是异步的,但是我很好奇处理程序内部的调用是否是异步的。

结论是,这两种方法都没有给我最好的结果。那么,异步加载外部图像的最佳方法是什么?我不仅限于使用 jQuery,纯 ASP.NET 解决方案就可以了。

I have the following situation:

I need to load several external images hosted by 3rd party, with example url like this;

http://externaldomain.com/img/a/b/someimage.jpg

however loading 1 image can cost up to 15 secs!! (crazy I know), so I'm thinking to load these images asynchronously using jQuery. Here's where I'm stuck, I have tried the following 2 methods:

var img = new Image();            
$(img).load(function () {                                
    containerForImg.removeClass('loading-image').append(this);
})

.attr('src', imgFullPath)   
.attr('alt', imgAltText); 

Which I think the code above will not load the image asynchronously because the request keeps waiting for all the images before it gets complete.

The second method is:

I created a generic handler (.ASHX) to download the image using WebRequest and WebResponse class from .NET and the call this handler with $.ajax() jQuery method, but this result in the screen being unresponsive if there are a lot of image. I can confirm that the request to the handler is asynchronous, however I'm curious as whether the call inside the handler is asynchronous or not.

The conclusion is, both methods don't give me the best result. So, what is the best way to load external image asynchronously? I'm not limited only to use jQuery, a pure ASP.NET solution is fine.

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

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

发布评论

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

评论(1

末骤雨初歇 2024-10-13 02:21:00

我不确定 jquery 的 .load() 函数是否设计用于 Image() 对象。不过,您可以自己完成,只需很少的工作:

var img = new Image()
img.onError = function(){
    //error handling here
}
img.onLoad = function(){
    //success
    containerForImg.removeClass('loading-image').append($(img));
}
img.onAbort = function(){
    //user clicked stop
}
img.src = "http://example.com"   //loading begins NOW!

I'm not sure that jquery's .load() function is designed to be used on Image() objects. You can do it yourself with very little work, however:

var img = new Image()
img.onError = function(){
    //error handling here
}
img.onLoad = function(){
    //success
    containerForImg.removeClass('loading-image').append($(img));
}
img.onAbort = function(){
    //user clicked stop
}
img.src = "http://example.com"   //loading begins NOW!
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文