Javascript:取消/停止图像请求

时间:2009-05-30 18:07:39

标签: javascript image

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

5 个答案:

答案 0 :(得分:55)

我遇到了完全相同的问题,当用户'快速浏览(ajax)搜索结果时,浏览器仍在尝试为每个页面而不仅仅是当前页面下载个人资料图像。这段代码对我有用,在新搜索运行之前调用了分页事件:

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

基本上就像点击浏览器上的“停止”按钮一样。

IE,FireFox,Chrome,Opera和Safari

中进行测试

答案 1 :(得分:3)

像这样。

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

答案 2 :(得分:2)

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

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

如果使用jQuery,您可以将$ .ajax()或$ .get的调用的返回值赋给xhr变量。

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

处理window.onunload并中止请求。

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

答案 3 :(得分:0)

将SRC标记重新分配给其他图像在IE7中无效,它会继续尝试下载第一张图像。

以下是设置:

我创建了一个JPEG类型的HTTP处理程序。它包含永远不会执行的代码。因此someImage.src = myhandler.ashx将永远坐在那里加载,直到它超时。

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

myhandler.ashx的请求并没有结束,即使我们已经重新分配了src。

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

使用IE7进行测试并使用HTTP Watch Pro进行监控。

答案 4 :(得分:-3)

糟糕的解决办法是简单地将图像标记的SRC属性设置为空字符串,或者将其指向窗口小部件。

修改

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

如果这不起作用,您可能受到浏览器架构的限制,这意味着您是S.O.L。