我有一个<img>
元素,它的src
是动态更改的。当发生变化时,MutationObserver被触发并记录MutationRecord。问题是,当我尝试访问MutationRecord中的数据时,它给了我旧数据。突变观察者:如何从突变记录中获取当前数据?
例如:
这是原始img
元件。
<img src="#" />
JS
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var observer = new MutationObserver(function(mutations){
console.log(mutations);
console.log(mutations[0].target.currentSrc);
});
var element = document.querySelector("#shirt-design");
observer.observe(element, {
attributes: true,
childList: true
});
的src
之后是动态变化的,currentSrc
应该像 “image.jpg的”。 MutationRecord显示新数据,但当我尝试直接访问它时,它会显示旧数据。
例如
console.log(mutations[0].target.currentSrc); //shows #
console.log(mutations[0].target.currentSrc); //SHOULD BE image.jpg
我怎样才能访问来自MutationRecord当前数据?
编辑
我从MutationRecord要的是naturalWidth
。它给我0
好像src
是#
(它是)。 如何获得当前图像的naturalWidth
?
console.log(mutations[0].target.naturalWidth); //0
console.log(mutations[0].target.naturalWidth); //SHOULD BE number > 0
EDIT 2
我甚至尝试这个代码如下(在MutationObserver函数中),结果是0
,这使我相信,MutationRecord从变化或observer
前在做出改变之前正在发射。
console.log(document.querySelector("#shirt-design").naturalWidth); //0
我在这里错过了什么?
'.target'是Node受到影响的突变。为什么''childList:true'为'
'? –
Andreas
你确定它只是'src'吗?也许它是被替换的整个节点? – wOxxOm
@wOxxOm唯一被改变的是使用jQuery的'src' attr()' –