我有一个网站,大量使用Ajax。偶尔需要在页面上为用户加载大型图像文件。我的问题是,当这些大型图像文件正在下载时,如果用户导航离开显示图像的页面,是否有一种方法可以停止它们?谢谢。
我有一个网站,大量使用Ajax。偶尔需要在页面上为用户加载大型图像文件。我的问题是,当这些大型图像文件正在下载时,如果用户导航离开显示图像的页面,是否有一种方法可以停止它们?谢谢。
我遇到了完全相同的问题,当用户通过(ajax)搜索结果快速“翻页”时,浏览器仍然尝试下载每个页面的配置文件图像,而不仅仅是当前页面。这段代码适用于我的情况,在新的搜索运行之前,调用分页事件:
//cancel image downloads
if(window.stop !== undefined)
{
window.stop();
}
else if(document.execCommand !== undefined)
{
document.execCommand("Stop", false);
}
本质上,它就像在浏览器上点击“停止”按钮。
在IE、FireFox、Chrome、Opera和Safari中进行了测试。
like this.
$(img).attr('src','');
var xhr;
//if using the XMLHttpRequest object directly
//you may already be doing something like this
function getImage(...){
xhr = new XMLHttpRequest();
xhr.open(....);
}
xhr = $.ajax(.....);
window.onunload = function(){
xhr.abort();
}
在IE7中,将SRC标签重新分配给另一张图片是无效的,它会继续尝试下载第一张图片。
以下是设置:
我创建了一个HTTP处理程序,它是JPEG类型。它包含永远不会完成执行的代码。因此,someImage.src=myhandler.ashx将永远停留在加载状态,直到超时。
在此期间,按下另一个按钮,将图像重新分配给小型图像文件:someImage.src=small.jpg
即使我们已经重新分配了SRC,对myhandler.ashx的请求也不会结束。
此外,如果您实际上删除节点someImage.parentNode.removeChild(someImage),它仍然会尝试下载myhandler.ashx。
使用IE7进行测试,并使用HTTP Watch Pro进行监视。
穷人的解决方案就是将图像标签的SRC属性设置为空字符串,或者将其指向一个小部件。
编辑
看到了你的评论,惊讶于将SRC属性更改为空时它不起作用...尝试使用blank.gif或其他东西。
如果这样仍然不行,那么可能受到浏览器架构的限制,也就是说你只能自认倒霉了。