javascript取消图像加载

javascript取消图像加载,javascript,dom,Javascript,Dom,我正在寻找一种使用javascript取消图像加载的方法。我已经研究过其他问题,仅仅隐藏它们是不够的。另外,必须加载页面的其余部分(window.stop()是不可能的) 正在加载的页面不在我的控制之下,只有一件事是可以保证的——页面上的第一个是我的javascript(轻量级-无jquery) 我已尝试将所有img源设置为“无”,但这没有帮助,因为dom是在解析页面后创建的,所有浏览器都有相同的行为-img在解析后加载。回顾: window.onload=function(){ imgs=do

我正在寻找一种使用javascript取消图像加载的方法。我已经研究过其他问题,仅仅隐藏它们是不够的。另外,必须加载页面的其余部分(window.stop()是不可能的)

正在加载的页面不在我的控制之下,只有一件事是可以保证的——页面上的第一个
是我的javascript(轻量级-无jquery)

我已尝试将所有img源设置为“无”,但这没有帮助,因为dom是在解析页面后创建的,所有浏览器都有相同的行为-img在解析后加载。

回顾:

window.onload=function(){
imgs=document.getElementsByTagName('img');
对于(i=0;i
您需要一个代理

您的脚本可以使用以下命令重定向到另一台服务器

location.replace('http://yourserver.com/rewrite/php?url='+escape(this.href));
也许您可以告诉我们为什么要取消图像加载,以及您加载的是谁的站点,以便我们可以想出更好的解决方案

如果页面上除了图像之外没有其他内容,您可以尝试

document.write('<base href="http://yourserver.com/" />');
document.write(“”);
这将与页面上的所有非绝对src和HREF相冲突

更新骇人听闻的黑客行为,但也许这几乎是伪代码(我要睡觉了)会起到一些作用

document.write('<script src="jquery.js"></script><div id="myDiv"></div><!-'+'-');
$(function() { 
  $.get(location.href,function(data) {
    $("#myDiv").html(data.replace(/src=/g,'xsrc='));
  });
})

document.write(“如果您只想取消图像加载,可以使用sєєm sєm的解决方案
但是我不认为使用windowonload事件会起作用

您可能需要提供一个按钮来取消图像加载 删除属性()


[确保在测试时禁用缓存在现代浏览器中是不可能的。即使您用JavaScript更改图像标记的src属性,浏览器仍然坚持加载图像。我从开发中了解到这一点。

我可以看到停止图像加载的唯一方法是在图像本身中不存在
src
属性,并使用自定义的
数据-*
>用于保存图像位置的属性:

<img data-src="http://path.to/image.png" />
并将此功能与一个简单的功能结合起来,以便在您或您的用户准备就绪时加载图像:

/* simple demo */
function imagePopulate(within, attr) {
    within = within && within.nodeType == 1 ? within : document;
    attr = attr || 'data-src';
    var images = within.getElementsByTagName('img');
    for (var i = 0, len = images.length; i < len; i++) {
        if (images[i].parentNode.tagName.toLowerCase() !== 'noscript') {
            images[i].src = images[i].getAttribute(attr);
        }
    }
}

document.getElementById('addImages').onclick = function(){
    imagePopulate();
};
/*简单演示*/
函数imagePopulate(内部,属性){
within=within&&within.nodeType==1?within:document;
attr=attr | |‘数据src’;
var images=in.getElementsByTagName('img');
对于(变量i=0,len=images.length;i


我不能确定所有浏览器是否都可以,但这似乎在Chrome中都可以使用(从查看开发者工具的“网络”选项卡到加载
noscript
-包含的
img
)。

可以使用webworkers完成。请参见以下示例:


停止web worker将取消在浏览器中加载图像

@John“我已尝试将所有img源设置为零,但没有帮助,因为dom是在解析页面后创建的,并且所有浏览器都有相同的行为-img在解析后加载”见此::-)Hi John。我已经看过这个答案了,但是如果我理解正确的话,为了有一个隐藏的iframe,我必须控制源htmlAnd,这是如何阻止图像加载的?@mplungjan这会产生同样的效果。我想他不想在页面中呈现任何图像。是的,在所有图像加载完成之前,您的代码不会生效。。。图像仍然被加载(查看调试器的网络部分)@daniel_或_如果这是你的情况,你有一个理论方法,我不知道你如何具体实现,停止渲染页面,然后用AJAX调用它。它启动得够快吗?很可能在加载任何图像之前启动Hi,我正在开发一种被客户网站使用的产品。其中一个要求是,从客户端站点页面的角度来看,它不能是“侵入性的”。因此,该产品使用javascript进行连接(这是该页面为连接该产品而必须添加的唯一内容),并对原始页面进行黑客攻击。不过,我们的一些客户非常希望看到原始图像仍然被加载,而我在这里…
base href
不会影响绝对URL。同样,对html没有控制权,只有javascript
<img data-src="http://path.to/image.png" />
<noscript><img src="http://path.to/image.png" /></noscript>
/* simple demo */
function imagePopulate(within, attr) {
    within = within && within.nodeType == 1 ? within : document;
    attr = attr || 'data-src';
    var images = within.getElementsByTagName('img');
    for (var i = 0, len = images.length; i < len; i++) {
        if (images[i].parentNode.tagName.toLowerCase() !== 'noscript') {
            images[i].src = images[i].getAttribute(attr);
        }
    }
}

document.getElementById('addImages').onclick = function(){
    imagePopulate();
};