Использование MutationObserver для ожидания появления кнопки

#javascript #firefox-addon-webextensions

Вопрос:

Я пытаюсь создать что-то, что автоматически нажимает необходимые кнопки на сайтах типа stackexchange, чтобы я мог перестать делать это сам. Я использую сценарий контента. Я пытаюсь:

  1. Найдите кнопку для настройки файлов cookie
  2. нажмите принять (обычно все они отменяются на сайтах stackexchange).

Вот мой код до сих пор. Я думаю, что он находит нужный узел, но нажимает на него слишком рано? Я не совсем уверен, так как я новичок в js и тому подобном.

 function AcceptCustomization() {
    let myNode;

    let observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
        if (!mutation.addedNodes) return
    
        for (let i = 0; i < mutation.addedNodes.length; i  ) {
            // do things to your newly added nodes here
            let node = mutation.addedNodes[i]
    
            if (node.nodeType === 1) {
                node
                var a = node.getElementsByClassName("flex--item s-btn s-btn__primary save-preference-btn-handler onetrust-close-btn-handler js-consent-banner-hide js-consent-save")[0]
                if (a) {
                    myNode = a
                    console.log(myNode)
                    console.log(myNode.click())
                }
            }
    
        }
        })
    })

    observer.observe(document.body, {
        childList: true
    , subtree: true
    , attributes: false
    , characterData: false
    })
}

function CustomizeCookies() {
    var a = document.getElementsByClassName("flex--item s-btn s-btn__filled js-cookie-settings")[0];
    if (a) {
        a.click();
        AcceptCustomization();
    }
    else {
        console.log(a);
    }
}

CustomizeCookies();
 

В будущем я хочу создать расширение, которое я смогу использовать для создания своего рода базы данных веб-сайтов с соответствующими нажатиями кнопок. Например, если у меня нет настройки файлов cookie для веб-сайта, я бы щелкнул расширение и запустил скрипт, который фиксирует мои нажатия на кнопки и повторяет их при каждом посещении в будущем (если это не тот же сеанс).

Спасибо 🙂

Комментарии:

1. Там нет необходимости в MutationObserver. Вот весь сценарий содержимого: document.querySelector('.js-accept-cookies')?.click()

2. Привет @wOxxOm, спасибо за ответ! Я хочу получить что-то, что не принимает никаких файлов cookie, кроме функциональных. Прав ли я, предполагая, что мне понадобится что-то другое для большинства веб-сайтов?