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