Как применить MutationObserver к eventListener, когда кнопка видна? - PullRequest
2 голосов
/ 21 мая 2019

У меня есть кнопка:

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

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

'наблюдаем' в 'MutationObserver': параметр 1 не относится к типу 'Node'

После поиска я увидел:

, но по какой-то причине, когда я кодирую 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 на основе видимости кнопки?

...