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
Freigeben: 2024-12-10 00:23:14
Original
586 Leute haben es durchsucht

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
        });
    });
}
Nach dem Login kopieren

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);
});
Nach dem Login kopieren

Oder mit async/await:

const elm = await waitForElm('.some-class');
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage