が動的に変更された<img>
要素があります。変更が発生すると、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から何をしたいです
EDIT
はnaturalWidth
です。それはが#
(これはそれ)であるかのように私に0
を与えます。 現在の画像のnaturalWidth
を取得するにはどうすればよいですか?
console.log(mutations[0].target.naturalWidth); //0
console.log(mutations[0].target.naturalWidth); //SHOULD BE number > 0
MutationRecordがから変更またはobserver
前であることを信じて私をリードし、私も(MutationObserver関数内)以下、このコードを試してみましたが、結果は0
た2
EDIT、変更が行われる前に発砲しています。
console.log(document.querySelector("#shirt-design").naturalWidth); //0
私はここで何が欠けていますか?
'.target'は突然変異が影響を受けるノードです。なぜ、 ''の 'childList:true'ですか? – Andreas
あなたは本当に 'src'ですか?おそらく、それは交換されるノード全体でしょうか? – wOxxOm
@wOxxOm変更されているのは、jQuery 'attr()'を使った 'src'だけです。 –