Javascript:取消/停止图片请求

我有一个网站,大量使用Ajax。 有时我需要在页面上为用户加载大的图像文件。 我的问题是,当这些大图像文件正在下载时,如果用户导航离开显示图像的页面,是否有办法阻止它们? 谢谢。

我有完全相同的问题,当用户通过(ajax)search结果快速浏览页面时,浏览器仍然尝试下载每个页面的configuration文件图像,而不仅仅是当前页面。 这段代码适用于我,在运行新search之前调用分页事件:

//cancel image downloads if(window.stop !== undefined) { window.stop(); } else if(document.execCommand !== undefined) { document.execCommand("Stop", false); } 

本质上就像点击浏览器上的“停止”button。

testingIE,FireFox,Chrome,Opera和Safari

喜欢这个。

 $(img).attr('src',''); 

假设您使用ajax来加载图像,您可以简单地放弃window.onunload事件中的请求。 为正在使用的XMLHttpRequest对象声明一个全局variables。

 var xhr; //if using the XMLHttpRequest object directly //you may already be doing something like this function getImage(...){ xhr = new XMLHttpRequest(); xhr.open(....); } 

如果使用jQuery,则可以将调用的返回值分配给xhrvariables$ .ajax()或$ .get。

 xhr = $.ajax(.....); 

处理window.onunload并中止请求。

 window.onunload = function(){ xhr.abort(); } 

将SRC标签重新分配给其他图像在IE7中不起作用,它将继续尝试下载第一张图像。

这是设置:

我创build了一个types为JPEG的HTTP处理程序。 它包含从未完成执行的代码。 所以someImage.src = myhandler.ashx将永远坐在那里加载,直到它超时。

在这个过程中,按下另一个button,将图像重新分配给一个小图像文件:someImage.src = small.jpg

即使我们重新分配了src,myhandler.ashx的请求也不会结束。

此外,如果你真的删除节点someImage.parentNode.removeChild(someImage)仍然不断尝试下载myhandler.ashx

使用IE7进行testing,并使用HTTP Watch Pro进行监控。

穷人的解决scheme是简单地将图像标签的SRC属性设置为空string,或者将其指向小部件。

编辑

看到你的评论,惊讶它不工作与更改SRC属性为空…尝试使用blank.gif或其他东西。

如果这不起作用,你可能会被浏览器架构所限制,这意味着你是SOL