Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Menanti Kewujudan Elemen dengan Cekap dalam JavaScript?

Bagaimanakah Saya Boleh Menanti Kewujudan Elemen dengan Cekap dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-10 00:23:14
asal
563 orang telah melayarinya

How Can I Efficiently Await Element Existence in JavaScript?

Tunggu Kewujudan Elemen dengan MutationObserver

Seperti yang anda temui dalam pembangunan sambungan Chrome anda, adalah penting untuk mengetahui apabila elemen tersedia pada halaman tersebut. Walaupun menggunakan selang waktu untuk menyemak penampilannya adalah pendekatan biasa, ia boleh menjadi tidak cekap. Nasib baik, jQuery tidak menyediakan penyelesaian yang mudah.

Alternatif moden dan berkesan ialah menggunakan API MutationObserver. Ini membolehkan anda mencipta fungsi JavaScript yang mendengar perubahan dalam pepohon 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
        });
    });
}
Salin selepas log masuk

Fungsi ini mengambil pemilih sebagai input dan mengembalikan Janji yang diselesaikan apabila elemen ditemui.

Untuk menggunakannya, anda boleh menulis:

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

Atau, dengan async/menunggu:

const elm = await waitForElm('.some-class');
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menanti Kewujudan Elemen dengan Cekap dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan