MutationObserver переопределяет новейшую мутацию - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь дождаться, пока не произойдет событие Mutation, чтобы переопределить только что полученное значение. Раньше я пытался применить его как обычно, но затем он продолжал заменяться другим значением, которое дано от третьей стороны, которую я не могу контролировать.

/** Intercept changes in select2-drop positioning **/
var MutationObserver = window.WebKitMutationObserver;

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        console.log("Override existent new found top value with -> " + newHeight);
        $(".select2-drop-active").css({'top':newHeight+"px"});
    });    
});

После того, как я попробую этот код, я думаю, что он входит в цикл, потому что мой Chrome зависает, и память начинает быстро увеличиваться

Есть ли способ остановить непрерывные звонки в Мутациях?

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете в любой момент приостановить работу своего наблюдателя мутаций, позвонив по номеру Наблюдатель.disconnect

Так что, в зависимости от вашего варианта использования, вы можете сделать что-то вроде этого:

var MutationObserver = window.WebKitMutationObserver;

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        console.log("Override existent new found top value with -> " + newHeight);
        $(".select2-drop-active").css({'top':newHeight+"px"});
    });
    observer.disconnect();
    console.log('pausing the observer');
    // If needed for your use case, start observing in 1 second
    setTimeout(() => observer.observe(), 1000);
});
...