Javascript:取消/停止图像请求

IT技术 javascript image
2021-01-29 01:05:21

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

5个回答

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

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

本质上,这就像单击浏览器上的“停止”按钮。

IE、FireFox、Chrome、Opera 和 Safari 中测试

非常感谢您的 MyWhirledView。我一直在努力解决这个问题好几天了。
2021-03-20 01:05:21
在 Safari 中确实有效……在此处查看类似问题并修复:stackoverflow.com/questions/3146200/……
2021-04-05 01:05:21
有没有办法将其限制为一种文件类型?
2021-04-07 01:05:21
@greatwitenorth 不幸的是,不,您无法对其应用方式进行精细控制。
2021-04-09 01:05:21

像这样。

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

假设您使用 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();
}
我没有使用 ajax 加载图像。我认为设置 src = '' 可以解决问题,但事实并非如此。我真正要找的是 document.getElementById('image').stopLoading(); :)
2021-04-05 01:05:21

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

这是设置:

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

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

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

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

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

我有我们页面的一部分,我希望所有图像加载停止。我发现如果我转到父节点并将innerHTML设置为“”,它会很好地中止所有请求。这仅适用于 IE,Safari 和 Firefox 似乎无论如何都会继续加载图像(由于其他原因,以编程方式单击停止按钮不适合我)
2021-04-03 01:05:21

可怜的人的解决方案是简单地将图像标签的 SRC 属性设置为空字符串,或者将其指向小部件。

编辑

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

如果这不起作用,您可能会受到浏览器架构的限制,这意味着您是 SOL