Javascript 在MutationObserver上返回true
我需要从下面的代码中Javascript 在MutationObserver上返回true,javascript,dom,return,dom-manipulation,mutation-observers,Javascript,Dom,Return,Dom Manipulation,Mutation Observers,我需要从下面的代码中返回true。但是,我很难从MutationObserver()返回任何值 我想在这里返回true,但我似乎无法返回true 要确认,我的代码确实有效,并且在满足我的条件时运行console.log(“显示假日按钮…”)。但是我必须找到一种方法返回真的 //WAIT FOR BUTTON FUNCTION function waitForElement(className, callBack){ window.setTimeout(function(){
返回true
。但是,我很难从MutationObserver()返回任何值
我想在这里返回true
,但我似乎无法返回true
要确认,我的代码确实有效,并且在满足我的条件时运行console.log(“显示假日按钮…”)
。但是我必须找到一种方法返回真的
//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});
});
//等待按钮功能
函数waitForElement(类名,回调){
setTimeout(函数(){
var元素=document.querySelector(className);
if(元素){
回调(类名、元素);
}否则{
waitForElement(类名,回调);
}
},1000)
};
让值=“”;
//突变观察者
让观察者=新的突变观察者(功能(突变){
for(设i=0;i<0.length;i++){
if(突变[i].oldValue==“按钮隐藏”){
console.log(“显示的按钮…”);
返回true;
//值=真;
//返回值;
};
};
});
//等待
waitForElement(`[search model=“pod”]`,函数(){
让target=document.querySelector('[search model=“pod”]“]');
observer.observe(目标,{attributes:true,attributeldvalue:true,子树:true});
});
在MutationObserver中返回true/false的最佳方法是什么?任何指针都会很有帮助
我也尝试过承诺,但这似乎不起作用,因为我正在观看的按钮可能会在DOM中间歇性出现和重新出现。我认为这个承诺只有在第一次实现时才会实现?(不是所有时候?)
函数waitForElement(选择器){
返回新承诺(功能(解决、拒绝){
var元素=document.querySelector(选择器);
if(元素){
var观察者=新的突变观察者(功能(突变){
for(设i=0;i<0.length;i++){
if(突变[i].oldValue==“按钮隐藏”){
console.log(“显示假日按钮…”);
解决();
返回;
};
};
});
让target=document.querySelector('[search model=“pod”]');
observer.observe(目标,{childList:true,attributes:true,attributeldvalue:true,subtree:true});
};
});
};
waitForElement(`[search model=“pod”]`)。然后(函数(元素){
console.log(“添加元素”,元素);
返回true;
});
您不能从回调返回,而期望值由MutationObserver
返回。您需要承诺。我注意到您要求的是子树,而不是子列表。这有帮助吗?@SergiuParaschiv-嘿,Sergiu,这真的很有帮助,谢谢。看起来我可以将突变观察者与承诺结合起来并返回这样的值?我会尝试用你给我的例子重新创建它。谢谢。嗨@SergiuParaschiv-我和promies有过接触,但是如果我想看一个按钮,它会出现和消失多次吗?我已经更新了上面的代码,但是承诺不是只有第一次才能解决吗?我基本上需要这样做每次按钮重新出现时都会触发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;
});