Maison > interface Web > js tutoriel > Comment puis-je attendre efficacement l'existence d'un élément en JavaScript ?

Comment puis-je attendre efficacement l'existence d'un élément en JavaScript ?

Barbara Streisand
Libérer: 2024-12-10 00:23:14
original
634 Les gens l'ont consulté

How Can I Efficiently Await Element Existence in JavaScript?

Attendre l'existence d'un élément avec MutationObserver

Comme vous l'avez constaté lors du développement de votre extension Chrome, il est crucial de savoir quand un élément devient disponible sur la page. Bien que l’utilisation d’intervalles pour vérifier son apparence soit une approche courante, elle peut s’avérer inefficace. Heureusement, jQuery ne fournit pas de solution simple.

Une alternative moderne et efficace consiste à utiliser l'API MutationObserver. Cela vous permet de créer une fonction JavaScript qui écoute les modifications dans l'arborescence DOM :

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
        });
    });
}
Copier après la connexion

Cette fonction prend un sélecteur en entrée et renvoie une promesse qui se résout lorsque l'élément est trouvé.

Pour l'utiliser, vous pouvez écrire :

waitForElm('.some-class').then((elm) => {
    console.log('Element is ready');
    console.log(elm.textContent);
});
Copier après la connexion

Ou, avec async/await :

const elm = await waitForElm('.some-class');
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal