1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Bookmarklet] 動的なDOM生成を指令したあとその要素を取得するまで待つ

Last updated at Posted at 2024-12-20

僕が忘れた時用

やりたいこと

ブックマークレットで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を間違えているなど要素が存在しない場合、スタックがオーバーフローする。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?