Heim >Web-Frontend >js-Tutorial >Wie kann ich effizient auf die Existenz von Elementen in JavaScript warten?

Wie kann ich effizient auf die Existenz von Elementen in JavaScript warten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 00:23:14566Durchsuche

How Can I Efficiently Await Element Existence in JavaScript?

Mit MutationObserver auf Elementexistenz warten

Wie Sie bei der Entwicklung Ihrer Chrome-Erweiterung festgestellt haben, ist es wichtig zu wissen, wann ein Element verfügbar wird die Seite. Die Verwendung von Intervallen zur Überprüfung des Erscheinungsbilds ist zwar ein gängiger Ansatz, kann jedoch ineffizient sein. Glücklicherweise bietet jQuery keine einfache Lösung.

Eine moderne und effektive Alternative ist die Verwendung der MutationObserver API. Dadurch können Sie eine JavaScript-Funktion erstellen, die auf Änderungen im DOM-Baum wartet:

function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelector(selector)) {
            return resolve(document.querySelector(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelector(selector)) {
                observer.disconnect();
                resolve(document.querySelector(selector));
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}

Diese Funktion verwendet einen Selektor als Eingabe und gibt ein Promise zurück, das aufgelöst wird, wenn das Element gefunden wird.

Um es zu verwenden, können Sie schreiben:

waitForElm('.some-class').then((elm) => {
    console.log('Element is ready');
    console.log(elm.textContent);
});

Oder mit async/await:

const elm = await waitForElm('.some-class');

Das obige ist der detaillierte Inhalt vonWie kann ich effizient auf die Existenz von Elementen in JavaScript warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn