首页 > 解决方案 > 如何在可见按钮上应用带有 eventListener 的 MutationObserver?

问题描述

我有一个按钮:

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

仅在满足条件时才可见。我正在尝试添加一个事件侦听器以根据按钮的可见性触发一些 JavaScript。在我的研究中,我发现我可以使用 aMutationObserver但由于某种原因我收到以下错误:

“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?

标签: javascriptaddeventlistenermutation-observers

解决方案


推荐阅读