首頁 >web前端 >js教程 >如何在 JavaScript 中有效率地等待元素存在?

如何在 JavaScript 中有效率地等待元素存在?

Barbara Streisand
Barbara Streisand原創
2024-12-10 00:23:14564瀏覽

How Can I Efficiently Await Element Existence in JavaScript?

使用MutationObserver 等待元素存在

正如您在Chrome 擴充程式開發中遇到的那樣,了解元素何時可用非常重要頁面。雖然使用間隔來檢查其外觀是一種常見的方法,但它可能效率低下。幸運的是,jQuery 沒有提供簡單的解決方案。

現代且有效的替代方案是利用 MutationObserver API。這允許您建立一個偵聽 DOM 樹中的變更的 JavaScript 函數:

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

此函數採用選擇器作為輸入,並傳回一個 Promise,該 Promise 在找到元素時解析。

要使用它,您可以寫:

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

或者,用非同步/等待:

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

以上是如何在 JavaScript 中有效率地等待元素存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn