Я пытаюсь получить информацию об изменении состояния элемента с помощью javascript MutationObserver
Чтобы получить состояние элемента до изменения, затем проверьте текущее состояние и на его основе примите некоторые решения.
В основном я пытаюсь реализовать событие onVisibilityChanged.
Я фиксирую любые изменения элементов, которые мне небезразличны, а затем проверяю, видны они или нет. Затем, если видимость отличается от того, что было передано 'visibilityChanged'.
Я знаю обходной путь, который я мог бы сделать, поскольку я получаю произошедшие изменения, я мог бы создать клон элемента (MutationEvent[0].target) и отменить все изменения. затем проверьте, виден ли клон, однако это звучит «хакерски» и неэффективно, поэтому мне было интересно, есть ли способ захвата элемента прямо перед тем, как произошла мутация. Я понимаю, что это маловероятно, так как MutationObserver уволен после того, как произошли все изменения, и это похоже на путешествие во времени, но я внимательно прислушиваюсь к вашим предложениям.
var observer = new MutationObserver(function(mutations) {
var itemFromThePast = mutations[0].MagicTimeMachine().GetMeTheItemBeforeItWasChanged; // this is the line that is missing
if ($(itemFromThePast).is(":visible") != $(mutations[0].target).is(":visible"))
{
console.log('I win!');
}
});
var targets = $('.ui-collapsible-content');
$.each(targets, function(i,target){
observer.observe(target, { attributes: true, childList: false, characterData : true, characterDataOldValue : true });
});