質問: **iframe** が読み込まれない時に通知を行いたいです。 **setTimeout** を使い3秒後に読み込まれているかをチェックして、読み込まれていない場合通知を行いたいです。 読み込みが完了した時は **.onload** が使えると思うのですが、うまくできませんでした。 ``` setTimeout("Alert()", 3000); function Alert() { if (!LiteSiteIframe.onload) { alert("iframeが読み込まれませんでした"); } } LiteSiteIframe で iframe を指定している状態です。 ``` **addEventListener('beforeunload'** というものもあるようなのですが、少し動作が違うようでしたので質問しています。 ### お詫び **think49さん mts10806さん miyabi-sunさん** ご指摘していただきありがとうございます。 beforeunloadはmiyabi-sunさんのおっしゃる通り、調べている最中、ページの離脱を防止すする際に使われるということで、なんとなく使えるのではないのかと思い、特に調べることなく載せてしまいました。.onloadについても理解ができていなかったと思います。 全体を通し、具体的に自分なりの結論を思って質問するべきところを、丸投げのような形になってしまい申し訳ありませんでした。 そんな中、わかっていない部分などのご指摘や、具体的なコードまで教えていただきありがとうございます。 教えていただきなんとか動作するようになりましたが、自分で理解しきれていないため、再度調べてみます。 毎度、割と質問が投げやりすぎるとご指摘を受けるので気をつけて行きたいと思います。 今後ともよろしくお願いいたします。
回答: > > LiteSiteIframe.onload > > > なんでコレで行けるのかと判断したのか小一時間...... これは`LiteSiteIframe.onload = function () {}`でロードされたらやってほしい事を書く箇所です。 参考記事: JavaScript インラインフレーム(iframe)関連 - とみぞーノート > > iframe が読み込まれない時に通知を行いたいです。 > > > これを実現させる為には、setTimeoutの戻り値を使えば実現できるでしょう。 参考記事: WindowOrWorkerGlobalScope.setTimeout() setTimeoutを実行すると、キャンセルする時に使えるIDが払い出されて、clearTimeoutを実行すれば「やっぱり取り消し」が出来ます。 ``` // とりあえず3秒経過したらアラートを出すように指示 var timeoutId = setTimeout(function(){ alert("iframeが読み込まれませんでした"); }, 3000); // iframeが読み込まれたら指示を取り消す LiteSiteIframe.onload = function () { clearTimeout(timeoutId); } ``` このLiteSiteIframeがDOM要素ならば恐らくコレで実現出来るかと思います。