首页 > 解决方案 > 在 MutationObserver 上返回 true

问题描述

我需要return true从下面的代码中。但是,我正在努力return获得 MutationObserver() 的任何价值。

我有 console.logged “按钮出现”的地方是我想要的地方return true,但我似乎无法真正返回。

console.log("Holidays button displayed...")为了确认,当我的条件得到满足时,我的代码确实可以工作并运行。但我必须找到一种方法来返回true

//WAIT FOR BUTTON FUNCTION
function waitForElement(className, callBack){
    window.setTimeout(function(){
        var element = document.querySelector(className);
        if(element) {
            callBack(className, element);
        } else {
            waitForElement(className, callBack);
        }
    },1000)
};

let value = '';

// MUTATION OBSERVER
let observer = new MutationObserver(function(mutations) {
    for (let i = 0; i < mutations.length; i++) {
        if (mutations[i].oldValue === "button ng-hide") {
            console.log("Button displayed...");
            return true;

            // value = true;
            // return value;
        };
    };
});

// WAIT FOR 
waitForElement(`[search-model="pod"]`,function(){
    let target = document.querySelector('[search-model="pod"]"]');
    observer.observe(target, { attributes : true, attributeOldValue: true, subtree: true});
});

在 MutationObserver 中返回真/假的最佳方法是什么?任何指针都会有所帮助!

我也尝试过承诺,但这似乎不起作用,因为我正在观看的按钮可能会间歇性地出现并重新出现在 DOM 中。而且我认为这个带有承诺的承诺只会在第一次返回true?(不是所有时候?)

function waitForElement(selector) {
    return new Promise(function(resolve, reject) {
      var element = document.querySelector(selector);

        if(element) {
            var observer = new MutationObserver(function(mutations) {
                for (let i = 0; i < mutations.length; i++) {
                    if (mutations[i].oldValue === "button ng-hide") {
                        console.log("Holidays button displayed...");
                        resolve();
                        return;
                    };
                };
              });
              let target = document.querySelector('[search-model="pod"]');
              observer.observe(target, { childList: true, attributes : true, attributeOldValue: true, subtree: true});
        };

    });
  };
  waitForElement(`[search-model="pod"]`).then(function(element) {
    console.log("Element Added", element);
    return true;
});

标签: javascriptdomreturndom-manipulationmutation-observers

解决方案


推荐阅读