首頁 > web前端 > js教程 > 如何暫停 JavaScript 執行直到特定 DOM 元素出現?

如何暫停 JavaScript 執行直到特定 DOM 元素出現?

Patricia Arquette
發布: 2024-12-09 14:46:14
原創
884 人瀏覽過

How Can I Pause JavaScript Execution Until a Specific DOM Element Appears?

如何暫停程式碼直到元素出現?

在 Web 開發中,通常需要僅當特定元素存在時才執行操作頁面。這就提出瞭如何確定元素是否存在的問題,尤其是在像 JavaScript 這樣的非同步環境中。

解決方案:利用 MutationObserver API

MutationObserver API 提供了強大的功能用於檢測 DOM 變化的解決方案。透過建立觀察者實例並將其指派給所需元素或其父元素,您可以設定一個回調,當觀察區域內發生突變(新增、刪除或屬性變更)時將觸發該回呼。

實作

提供的程式碼片段示範如何使用建立可重複使用的waitForElm 函數MutationObserver:

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
        });
    });
}
登入後複製

用法

用法
waitForElm('.some-class').then((elm) => {
    console.log('Element is ready');
    console.log(elm.textContent);
});
登入後複製

要等待類別為'some-class'的元素出現,可以使用:
const elm = await waitForElm('.some-class');
登入後複製

或者,與async/await:
  • 這種方法有幾個優點,包括:
  • 非阻塞:它使用MutationObserver API,被動監視更改不阻塞主執行緒。
  • 否依賴: 僅依賴原生 API,無需第三方函式庫。
Promise-Based: 回傳一個 Promise,方便你處理元素的外觀與 .then() 或 async/await.

以上是如何暫停 JavaScript 執行直到特定 DOM 元素出現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板