僕が忘れた時用
やりたいこと
ブックマークレットでDOMの動的生成を行う要素に対しclick()
などを実行してDOMの生成を促した後、生成された要素を取得したい。
解決すべき課題
要素が生成されるのを待つ必要がある。
こーど
function afterExec(ms, f) {
return new Promise((r) => setTimeout(() => r(f()), ms));
}
async function waitLoadElementById(elementId) {
const target = await afterExec(10, () => document.getElementById(elementId));
if(target == null) {
return await waitLoadElementById(elementId);
}
return target;
}
javascript: (async function () {
....
....
const elem = await waitLoadElementById("elemenNoID");
...
問題点
再帰呼び出しを行っているので、ロードがあまりにも遅い、あるいはIDを間違えているなど要素が存在しない場合、スタックがオーバーフローする。