Chrome の拡張機能に取り組んでいるのですが、要素がいつ存在するかを調べる最も良い方法は何でしょうか? 要素が存在するまでチェックする間隔でプレーンな JavaScript を使用するか、それとも jQuery でこれを行う簡単な方法があるのでしょうか?
ベストアンサー1
ここでは、ミューテーションオブザーバーAPI。
- いいえ
jQuery
- いいえ
Timer
- サードパーティのライブラリなし
Promise
ベースであり、async/await
いくつかのプロジェクトで使用しました。
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));
}
});
// If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
使用するには:
waitForElm('.some-class').then((elm) => {
console.log('Element is ready');
console.log(elm.textContent);
});
または async/await の場合:
const elm = await waitForElm('.some-class');