Javascript 如何检测通过image()构造的任何图像是否更改了其源?

Javascript 如何检测通过image()构造的任何图像是否更改了其源?,javascript,Javascript,我想要console.log通过网页上的图像构造函数构造的任何图像的src属性。在加载图像时,我不需要它——就在src属性更改之后 我已尝试重写Image.onload方法(当然,此方法会提供映像已加载的稍后点),但此代码不支持console.log任何内容: Image.prototype.nativeOnload = Image.prototype.onload; Image.prototype.onload = function() { console.log(this.src);

我想要
console.log
通过网页上的图像构造函数构造的任何图像的
src
属性。在加载图像时,我不需要它——就在src属性更改之后

我已尝试重写Image.onload方法(当然,此方法会提供映像已加载的稍后点),但此代码不支持console.log任何内容:

Image.prototype.nativeOnload = Image.prototype.onload;
Image.prototype.onload  = function() {
  console.log(this.src);
  this.nativeOnload();
};
这可能是因为onload属性被覆盖了

如何检测通过js image()构造函数构造的网页上的任何图像何时更改其源?是否有一种方法可以通过javascript观察者实现这一点?

第一个选项 最简单(且开销较小)的方法是在代码中实现回调,以更改图像标记的源。但是,为此,您需要访问de代码,并且必须能够对其进行更改

第二种选择 您还可以定义DOM eventlistener,但并非所有浏览器都支持此功能

多姆塔特修改

关于stackoverflow的上一篇文章是关于此选项的

第三种选择 实现这一点的第三种方法是定期检查图像源,查看自上次检查以来图像是否发生了更改。你可以间隔一段时间来做这件事

(单击“更改源”按钮,甚至尝试在firebug中更改源以测试此功能)

html


谢谢-但我实际上无法访问单个图像元素。外部库在私有方法中构造它们……好吧,那么添加回调就不是一个选项了。但是,您可以实现其他建议的方法。ps:更新的JSFIDLE
<img id="check" src="yourimagesource">
var check_img=$("#check");
var current_src=check_img.attr("src");


window.setInterval(function(){
    new_src=check_img.attr("src");
    if(current_src!=new_src){
        alert("src changed");
        current_src=new_src;
    }

}, 500);