gpt4 book ai didi

ajax - 如何从可中止的 AJAX 请求返回二进制图像数据并将结果设置为 HTML/DOM 图像的 src?

转载 作者:行者123 更新时间:2023-12-04 08:29:21 24 4
gpt4 key购买 nike

我正在编写一个 Web 应用程序,它涉及在网页上创建(和删除)大量图像的连续循环。每个图像都是由服务器动态生成的。

var img = document.createElement("img");
img.src = "http://mydomain.com/myImageServer?param=blah";

在某些情况下,其中一些图像在下载完成之前就已经不再有用了。那时,我将它们从 DOM 中删除。

问题是即使从 DOM 中删除了这些图像,浏览器仍会继续下载这些图像。这造成了瓶颈,因为我有新图像等待下载,但他们必须等待旧的不需要的图像先完成下载。

我要 中止 那些不需要的图像下载。显而易见的解决方案似乎是通过 AJAX 请求二进制图像数据(因为可以中止 AJAX 请求),并在下载完成后设置 img.src:
// Code sample uses jQuery, but jQuery is not a necessity

var img = document.createElement("img");

var xhr = $.ajax({
url: "http://mydomain.com/myImageServer?param=blah",
context: img,
success: ImageLoadedCallback
});

function ImageLoadedCallback(data)
{
this.src = data;
}

function DoSomethingElse()
{
if (condition)
xhr.abort();
}

但问题是这条线并不像我希望的那样工作:
this.src = data;

我搜索了高低。有没有办法将图像源设置为通过 AJAX 发送的二进制图像数据?

最佳答案

您必须对 data 进行 base64 编码成 data: URI实现这一目标。但它在 IE6-7 中不起作用,并且您可以在其中放入多少数据是有限制的,尤其是在 IE8 上。作为对支持它的浏览器的优化,它可能值得做,但我不会依赖它。

另一种可能的方法是使用 XMLHttpRequest预加载图像,然后丢弃响应并设置 src全新 Image指向同一个地址。图像应该从浏览器的缓存中加载。但是,在动态生成图像的情况下,您需要注意缓存 header 以确保响应可缓存。

关于ajax - 如何从可中止的 AJAX 请求返回二进制图像数据并将结果设置为 HTML/DOM 图像的 src?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com