我正在编写一个 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 发送的二进制图像数据?