質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

3回答

452閲覧

JavaScript loadについて

tyrwe

総合スコア4

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/02/27 02:33

編集2023/02/27 02:37

SPA構築されたサイトで、
window.onload=function(){}が定義されたページで新たにコンソールから
読み込みが終わった探知はできないのでしょうか?

既存のコード window.onload=function(){alert("aaa");}
コンソールから追加した処理 発生しない 発生させる方法はあるのか? window.onload=function(){alert("bbb");}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/02/27 04:10

コンソールを触る頃にはページ全体の読み込みも終わっているかと思うのですが、何を検知したいのでしょうか?
tyrwe

2023/02/27 05:30

そうなんですよね、SPAなのでいじりようがないとみていいでしょうか?
arcxor

2023/02/27 06:08

addEventListener を使わずイベントハンドラープロパティに直接代入しているのは何故ですか? window.onload に代入したものをどうにかしたいというのがよく分かりません。
maisumakun

2023/02/27 07:44

> SPAなのでいじりようがないとみていいでしょうか? そもそも、操作したいサイトは自分が管理するものなのでしょうか?そうではないのでしょうか?
miyabi_takatsuk

2023/02/27 08:08

SPAに使用しているフレームワークなどあれば、それを提示してください。 だいたいのSPA系フレームワークでは、ライフサイクルがあり、 そのライフサイクルの中で実行される関数がわかれば、 その関数内で処理を実行するようにできるはずです。
guest

回答3

0

document.readyState を見ればよいのではないでしょうか。

投稿2023/02/27 06:09

arcxor

総合スコア2859

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

状況がわかりませんが、新たに追加する要素のonloadで検出すればいいのでは?

  • sample.php(わざと遅延させるサンプル)

PHP

1<?PHP 2sleep(3); 3print "content";

SPAであれば呼び出すfetchなどにロード状況を仕込む

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const url="sample.php"; 4 btn.addEventListener('click',e=>{ 5 fetch(url).then(res=>res.text()).then(txt=>{ 6 container.innerHTML=txt; 7 console.log('loaded'); 8 }) 9 }); 10}); 11</script> 12<input type="button" value="load" id="btn"> 13<div id="container"></div>

もしくはcontainerをMutationObserverで監視するとか

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const url="sample.php"; 4 const mo = new MutationObserver(n=>{ 5 console.log('loaded'); 6 }); 7 const opt = { 8 childList:true, 9 }; 10 mo.observe(container, opt); 11 btn.addEventListener('click',e=>{ 12 fetch(url).then(res=>res.text()).then(txt=>{ 13 container.innerHTML=txt; 14 }) 15 }); 16}); 17</script> 18<input type="button" value="load" id="btn"> 19<div id="container"></div>

投稿2023/02/27 02:49

編集2023/02/27 06:14
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyrwe

2023/02/27 03:17

それが判別できない限り不可能ということですね
yambejp

2023/02/27 03:27

>それが判別できない限り不可能ということですね  コメントの意味がわかりませんが、スクレイピングかなにかですか? windowのloadイベントと非同期要素の追加読み込みでは対象が違うというだけです
tyrwe

2023/02/27 05:32

SPAはscriptタグを動的にロードしてると思うのでscriptタグに仕掛ける以外に考えられる手法があるのでしょうか というかonloadは上書きできないから無理では?
tyrwe

2023/02/27 05:33

初回の読み込みが発生した時点で window.onloadは以後効力を発揮しないと思います
yambejp

2023/02/27 05:38

他人のサイトでなければ追加分をロードする処理に読み込み完了を知らせる機能をつけるだけですよね? 質問に対する情報量がすくなくて、もうすこし具体的に書かないとこれ以上の回答はぼんやりしかできず 無意味だと思います
guest

0

イベントリスナーの追加
新たなJavaScriptコードが追加された場合に、そのコードを実行したいイベント(クリックなど)にイベントリスナーを追加します。例えば、以下のようなコードを実行することで、ボタンをクリックした時に新たに追加されたwindow.onloadコードを実行することができます。

javascript

1document.querySelector('button').addEventListener('click', function() { 2 window.onload = function() { 3 alert('bbb'); 4 } 5}); 6

投稿2023/02/27 04:32

okuka

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyrwe

2023/02/27 05:29

buttonに追加するとかではなくwindow.onloadが定義されてうえでSPA構築されたサイトで発生させたいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問