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