• 締切済み

onUnloadがうまくいかない

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

noname#226032
noname#226032

みんなの回答

  • 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
  • ベストアンサー率27% (163/596)
回答No.1

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

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

お礼

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

関連するQ&A

  • onUnloadが働かない場合があります

    こんにちは。 JavaScriptの『onUnload』で、ページ遷移の時は稼動するのですが、ブラウザを終了させた場合、稼動する端末と稼動しない端末がでてしまします。 使用しているIEのバージョンはIE6.0.29のSP2です。 サンプルとしては以下のコードです。 *************************************** <HTML> <HEAD> <TITLE>Sample</TITLE> <SCRIPT Language="JavaScript"> <!-- function test(){ alert("ページを切り換えます"); } // --> </SCRIPT> </HEAD> <BODY onUnload="test()"> <CENTER> <H1>onUnloadテスト</H1> <BR><BR> <a href="http://www.google.co.jp">ページ切り替え</a> </CENTER> </BODY></HTML> ********************************************** 「ページ切り替え」をクリックした時も、また、ブラウザを終了した時も『ページを切り換えます』のアラートが出る筈ですが、ブラウザを終了した時のみ、アラートが出ないPCがあります。 コード自体に問題があるとは思えず、IEの設定の問題かな?とも思いますが、10台程で試してみたところ、2台が 上記のような状態になります。 考えられる原因をご教授頂ければ幸いです。 宜しくお願いいたします

  • onunload で XMLHttpRequest

    ページを閉じたことをサーバへ伝えたいと思って、onunloadイベントで XMLHttpRequest により URLにアクセスしたいのですが、うまくいきません。 onunload の中から下記のような処理を行う関数を呼び出しています。 try{ var url = "http://xxxxxxx/unlock.php?no=99"; var xhr = XMLHttpRequestCreate(); //マルチブラウザ対応 xhr.open("GET", url); xhr.setRequestHeader("Content-Type", "text/plain"); xhr.send(null); }catch(e){ console.log(e); } xhr.status を見てみたら 0 になっていました。onunload でも、onbeforeunload でも send() を行ったあとに xhr.status が 0 になるようです。 画面上にテストボタンを置いて onclick から呼び出してみると、うまく動作します。 console.log を表示するとちゃんと表示されるので、onunload も onbeforeunload も 正しくセットされていると思います。 ブラウザは、Chrome と Firefox の2種類で試しましたが、同様でした。 やはりフォームが閉じるときは XMLHttpRequest は使えないのでしょうか? 何か回避する方法はないでしょうか?

  • JavaScriptのonUnloadについて

    お世話になります。 JavaScriptのonUnloadについてご教授願います。 下記のサンプルソースなのですが Google Chrome(13.0.782.218 m)では正常に動作します。 Internet Explorer(7.0.5730.13)では正常に動作しません。 また、ローカル環境で動作させるとセキュリティ保護のため、このコンピュータにアクセスする可能性のある・・・ と表示され許可するとInternet Explorerでも正常に動作します。 ソースを改造することにより解決出来ますでしょうか? お手数をお掛け致しますがどうぞよろしくお願いいたします。 main.html ----------------------------------------------------------- <html> <head> </head> <body onUnload="kozinWin.close()"> <INPUT TYPE="BUTTON" value="個人情報保護方針" onClick="kozinWin=window.open('information.html' , 'kozin' , 'width=750, height=500, menubar=no, toolbar=no, scrollbars=yes')";> </body> </html> ----------------------------------------------------------- information.html ----------------------------------------------------------- <html> <head> </head> <body> 個人情報 </body> </html> -----------------------------------------------------------

  • 現在JavaScriptのonLoad,onUnloadを使用してCo

    現在JavaScriptのonLoad,onUnloadを使用してCookieの操作を行うためのプログラムを作成しているのですが、うまくいかず困っています。 詳細な内容ですが、 ページを開くと、Cookieに保存しておいた文章をtext部分に読み込み、 ページを閉じると、text部分に記述してある内容をCookieに自動で保存させるというものです。 下記の内容で処理を行っているのですが、onLoadもonUnloadも行われてはいないようです。 まだJavaScriptを勉強し始めたばかりで無知なため、まったく的外れなことを行っているのかもしれません。 よろしければ解説をお願い致します。 <head> <SCRIPT LANGUAGE="JavaScript"> <!-- // --==*==-- --==*==-- --==*==-- --==*==-- --==*==-- // クッキーへの書き込み //   引数:kword=キーワード  kdata=データ  kday=保存期間(日数) //   返却値:なし // --==*==-- --==*==-- --==*==-- --==*==-- --==*==-- function CookieWrite(kword, kdata, kday) { if(!navigator.cookieEnabled){ // クッキーが利用可能かどうか alert(";クッキーへの書き込みができません"); return; } sday = new Date(); sday.setTime(sday.getTime() + (kday * 1000 * 60 * 60 * 24)); s2day = sday.toGMTString(); document.cookie = kword + "=" + escape(kdata) + ";expires=" + s2day; } // --==*==-- --==*==-- --==*==-- --==*==-- --==*==-- // クッキーから読み込み //   引数:kword=キーワード //   返却値:データ // --==*==-- --==*==-- --==*==-- --==*==-- --==*==-- function CookieRead(kword) { if(typeof(kword) == "undefined")  // キーワードなし return ""; // 何もしないで戻る kword = kword + "="; kdata = ""; scookie = document.cookie + ";";    // クッキー情報を読み込む start = scookie.indexOf(kword);  // キーワードを検索 if (start != -1){ // キーワードと一致するものあり end = scookie.indexOf(";", start); // 情報の末尾位置を検索 kdata = unescape(scookie.substring(start + kword.length, end)); // データ取り出し } return kdata; } --> </SCRIPT> </head> <body onLoad='text1.value = CookieRead("cookie")' onUnload='CookieWrite("cookie",text1.value,7)'> ・ ・ <textarea name="text1"></textarea> ・ ・ </body>

  • FireFoxでブラウザーと閉じる時に特定の処理を実行したいのですが良い方法を教えてください。

    ブラウザーを閉じる時に特定の処理をWebページ内で実行したのですが、FireFoxでは可能でしょうか? IEでは、下記のロジックで対応することが出来ました。 window.onunload=function() { var x=window.event.clientX,y=window.event.clientY; var w=document.body.clientHeight; if (y<0 &(w-5)<x || x<15) { alert('IEを閉じます。'); } }

  • 【javascript】prototypeを使って宣言したfunctionでthis.の値が取れない

    以下HTMLは開いた時に'aaa'がアラートされるつもりで作りました。 ※行頭は全角スペースです。 <html> <head> <script type="text/javascript"><!-- function hoge(){  this.val ='aaa'; }; hoge.prototype.func = function(){  alert(this.val); }; h = new hoge(); if(window.addEventListener){  window.addEventListener('load', h.func, false); }else{  window.attachEvent('onload', h.func); } //--></script> </head> <body> </body> </html> 結果は、undifindがアラートされました。 alert(this.val); を alert(h.val); とベタに記述すれば回避できますが、ちょっと違和感を感じます。 このような場合、どのような記述がベターなのでしょうか?

  • addEventListenerの使い方について

    イベントリスナでスクロール時にアラートを表示したいのですが、 以下のソースでは動作しませんでした。 どこかに簡単なイベントに対するアクションを記載したサンプルコードはありますでしょうか? <script type="text/javascript"> document.addEventListener("scroll", alview, false); funciton alview(a){ alert(1); } </script> <body>

  • addEventListener の第三引数の意味

    addEventListener の第三引数の意味を教えてください。 MDNでは element.addEventListener - MDN https://developer.mozilla.org/ja/DOM/element.addEventListener 「true の場合、useCapture は、ユーザがキャプチャを開始したいことを示しています」 と書いてあり何のことやらさっぱり分かりませんでした。 一応下記のサイトを見て表面的な動きは理解しました。 addEventListener の第三引数について - hogehoge @teramako http://d.hatena.ne.jp/teramako/20070126/about_useCapture_of_addEventListener 以下の順で処理される。 1 親のtrue 2 子のtrue 3 子のfalse 4 親のfalse それは分かったのですが、どういうときに使い分けるのかということが結局分かりませんでした。おそらくはほとんどの場合でどちらでもいい・意識する必要が無いのではないかと思いますが、しかし一応きちんと理解しておきたいと思っています。 ◎addEventListener の第三引数の意味 ◎addEventListener の第三引数を ・trueにした方がいいケース ・falseにした方がいいケース このあたりを教えてください。 よろしくお願いします。

  • 下記コードですが、なぜtrace出来ないか、わかりますか?

    下記コードですが、なぜtrace出来ないか、わかりますか? ----------------------------------------------------------------------- var bmpData:BitmapData = new BitmapData(100,100,true,0xff000000); var bmp:Bitmap = new Bitmap(bmpData,PixelSnapping.AUTO,true); addChild(bmp); bmp.addEventListener(MouseEvent.CLICK,hoge); function hoge(e){ trace('なぜか無反応!'); } ----------------------------------------------------------------------- よろしくお願いします。

    • ベストアンサー
    • Flash
  • onUnloadについての疑問

    onUnloadはページが移動した場合、現在のドキュメントが破棄された場合に発生するイベントですよね? ブラウザが閉じられた場合、このイベントは実行されるものでしょうか? また、他にブラウザが閉じられた場合に発生するイベントがあったら教えてください。 よろしくお願いしますm(__)m