当按钮可见时,如何将MutationObserver与eventListener配合使用?

时间:2019-05-21 19:55:27

标签: javascript addeventlistener mutation-observers

我有一个按钮:

<button type="button" id="errorLog" class="btn btn-secondary btn-lg btn-block">Download</button>

仅在满足条件时可见。我试图添加一个事件侦听器,以基于按钮的可见性来触发一些JavaScript。在研究中,我发现我可以使用MutationObserver,但是由于某种原因,我得到了一个错误:

  

在“ MutationObserver”上的“观察”:参数1的类型不是“节点”

搜索后,我确实看到了:

但是出于某种原因,当我将MutationObserver编码为:

let errorFile = document.getElementById('errorLog')
var observer = new MutationObserver(function() {
    if (errorFile.style.display == 'display') {
        console.log('foobar')
    }
})
const config = { 
    attributes: true, 
    childList: true, 
    characterData: true 
}
observer.observe(errorFile, config)

我收到了Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'的错误,所以我尝试了以下条件:


let errorFile = document.getElementById('errorLog')
if (errorFile != null) {
    var observer = new MutationObserver(function() {
        if (errorFile.style.display == 'display') {
            console.log('foobar')
            errorLog.addEventListener('click', (e) => {
                e.preventDefault
                console.log('fired click')
            })    
        }
    })
    const config = { 
        attributes: true, 
        childList: true, 
        characterData: true 
    }
    observer.observe(errorFile, config)
}

我还引用了:

但它甚至不会触发。如何根据按钮的可见性触发JavaScript?

0 个答案:

没有答案