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);