Javascript 更改图像的src属性是否会阻止图像下载?

Javascript 更改图像的src属性是否会阻止图像下载?,javascript,browser,Javascript,Browser,假设我有两个手风琴标签。第一个加载数百个图像,并在页面加载时打开 我想能够停止下载图像,如果用户点击第二个手风琴标签。通过js更改图像的src属性会阻止图像下载吗?或者,请求是否会一直持续到完成,而不会显示在页面上?我有一个脚本,可以在3秒钟内加载SO徽标,而这正是我为另一个问题所做的 使用它,我试图重现问题: var img = new Image(); img.onload = function() { alert("loaded"); }; img.src ="http://al

假设我有两个手风琴标签。第一个加载数百个图像,并在页面加载时打开


我想能够停止下载图像,如果用户点击第二个手风琴标签。通过js更改图像的src属性会阻止图像下载吗?或者,请求是否会一直持续到完成,而不会显示在页面上?

我有一个脚本,可以在3秒钟内加载SO徽标,而这正是我为另一个问题所做的

使用它,我试图重现问题:

var img = new Image();
img.onload = function() {
    alert("loaded");
};
img.src ="http://alexturpin.net/slowimage/slowimage.php";

setTimeout(function() {
    img.src = "";
}, 1000);

从我收集的信息来看,在Chrome中,
onload
不会被触发,但浏览器会一直显示一个微调器,如果我在网络选项卡上找到我的图像并检查其内容,它就会出现。所以我的答案是否定的,至少在Chrome浏览器中,图像仍然可以加载


这是一个有趣的问题,我建议您尝试在尽可能多的浏览器中测试它,并在其上写一些博客文章。

不确定是否会,就像其他评论一样。但我可以建议采用一种行之有效的方法。假设不是所有图像都可见,只要在它们可见时设置正确的src属性即可

因此,当url不可见时,将其默认为myGray.gif,当它进入视图时,将其设置为myImage.jpg

关闭当前手风琴后,可以再次将图像源设置回轻量级gif。(这可以防止某些版本的ipad出现与gc相关的bug)

您的浏览器使用特定的HTTP GET请求请求该图像,如下所示: 在HTTP协议中指定。一旦请求,http服务器 开始传输

因此,它位于浏览器(作为http客户端)和http服务器之间

因为http协议没有考虑中止 传输时,浏览器应执行非标准机制来 以编程方式中止连接。但由于没有具体说明 在任何标准下,我想你都找不到任何方法来解决这个问题 javascript或任何客户端代码


您可以尝试window.stop()停止所有请求,但不能停止单个请求 一个


如果您想停止对大图像的单个请求,您需要什么 可以做的是将图像加载到隐藏IFRAME中的文档中。这个 IFRAME的onload事件可用于将图像加载到主图像中 文档,它应该在什么时候被缓存(假定您有 配置为这样做的缓存指令)

如果图像拍摄时间过长,则可以访问IFRAME的 contentWindow并向其发出停止命令

您需要有尽可能多的IFRAME元素,因为图像可以 同时被请求


直接取自&。

您是否在线使用该应用程序?使用firubug查找或只是给我们链接,我们可以检查。。。我也想知道答案:)你可以试试看,我想……我相信它能阻止他们,但我不是100%。我不久前写了一些东西,将很多图像加载为缩略图,并在加载过程中操纵DOM。我并没有真的想过要进行souble检查,但我有一个明显的印象,那就是他们已经停止了。我认为这可能与浏览器有关。我想你应该试试看,然后用Fiddle(免费网络监视器)之类的工具观察你电脑上的网络流量,看看下载是否真的停止了。您可以尝试的另一件事是实际删除DOM对象,以便垃圾收集器释放它们。您可以通过检测选项卡是否具有焦点(使用document.hasFocus)来停止它,并通过使用window.stop()停止加载它们,但您将无法从最后一点重新启动。此问题可能有助于找到解决方案:
onload
事件是一个单独的问题。IE9和FF6都会中止映像请求问题仍然存在,如果继续加载映像,即使将其设置为
myGray.gif
也无法阻止它。因此,请首先防止浏览器加载所有文件(如果可能的话)。