• 締切済み

onUnloadがうまくいかない

onUnloadは迷惑行為になりかねないので、下記では無反応なのでしょうか? addEventListener('onUnload', () => { alert('waite'); });

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

絶対に!ANo.1のサイトを見て、『Chromeは対応していないようだ』と結論づけてはいけません。 そのサイトの更新日は2006年、10年以上前で、Chromeが載っていないのはChromeがまだ無かったからで、当たり前のことです。 そして、addEventListenerでは"on"は要らないので書くなら、 addEventListener('unload',() => { alert('wait'); }); こうですが、それでも動くことはありません。 何故なら、『迷惑行為になりかねないので、無反応』だからです。 どこで知ったのか知りませんが、この考え方は現在のWebプログラミングにとって非常に重要なことです。 もし、ご自身で思いついたのなら、ここにワンサカいるJavaScriptのJの字も知らずに、これ以上無いくらい最悪な情報をググって見つけてくるしかできない連中よりはよっぽどセンスがあります。 ともかく、現代ではユーザーの行動をブロックすることは厳禁なのです。 そもそもalertを使う事自体あまり良いことではありません。 フレームワークを使って実現するか、dialog要素を使ってshowModal()するのが先進的なやり方です。 まあこういうことを気にしていたら大変なので、練習中は多少alertなどに頼って構いません。 もう一つこれからの勉強で大事になってくることは、同期APIと非同期APIです。 alertでなくても、JSが処理待ちしている間はページ自体が固まってしまいますからね。 通信など、長く時間がかかる処理もまた気を付けないといけないのです。 現代では、両方ある場合同期的なAPIの方は非推奨です。 同期的APIは例え使えても、alertと同じく本番では使ってはいけません。 きっともうすぐ勉強することになると思います。

noname#226032
質問者

お礼

情報が古かったので今と違った間違った情報だったのですね。 http://www.webcreativepark.net/javascript/event/unload/ が正しいのですね。 >>> もう一つこれからの勉強で大事になってくることは、同期APIと非同期APIです。 alertでなくても、JSが処理待ちしている間はページ自体が固まってしまいますからね。 通信など、長く時間がかかる処理もまた気を付けないといけないのです。 現代では、両方ある場合同期的なAPIの方は非推奨です。 同期的APIは例え使えても、alertと同じく本番では使ってはいけません。 きっともうすぐ勉強することになると思います。 恐らくページ表記時に一緒にすべてダウンロードするのが同期型で、 グーグルマップのように移動したときに移動先の地図だけ、その場でダウンロードするのが、 非同期型で、現在はできるだけこちらを使うべきという事でしょうね。 そのほうが表記時に待たされる時間が減るので閲覧者がいらいらしないという事なのでしょうね。 >>> 何故なら、『迷惑行為になりかねないので、無反応』だからです。 どこで知ったのか知りませんが、この考え方は現在のWebプログラミングにとって非常に重要なことです。 もし、ご自身で思いついたのなら、ここにワンサカいるJavaScriptのJの字も知らずに、これ以上無いくらい最悪な情報をググって見つけてくるしかできない連中よりはよっぽどセンスがあります ありがとうございます。JSが難しくて、ちょっと長いコードになると苦戦しているので大変励みになります。 confirmなども今は使うべきではないと聞き、もしかしてそのような理由でブラウザ側で使えないようにされているのかなと思った次第です。

  • t_hirai
  • ベストアンサー率28% (222/788)
回答No.1

このページとかみると単純にブラウザが対応していないのだと思いますよ。 http://javascriptist.net/ref/event.onunload.html

参考URL:
http://javascriptist.net/ref/event.onunload.html
noname#226032
質問者

お礼

クロームは確かに対応していないようですが、ファイヤーフォックスは最新であれば使えるのですよね。 ファイヤーフォックスでも無反応です。

関連するQ&A