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
Barbara Streisandasal
2024-12-10 00:23:14566semak imbas

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
        });
    });
}

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);
});

Atau, dengan async/menunggu:

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

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!

Kenyataan:
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