トップ回答者
master page内でのjavascript onunload

質問
-
いつもお世話になっております。
Master page内でonunloadのjavascriptイベントを拾いたいと思っております。
具体的には以下のことをやりました。
1.vs 2010にてASP.NET Web アプリケーションを生成
2.master pageのhead句内に以下を記述
*********************************************************
<script language="javascript" type="text/javascript">
//<![CDATA[
function HandleClose() {alert("close");
PageMethods.AbandonSession();
}
//]]>
</script>
<body onunload="HandleClose()">*********************************************************
3.
デバック実行しDefault.aspxを起動し、閉じるボタンを押す。
私が思うに、alert messageが出ると思っていたのですが、
でませんでした。
自作のprojectを作成しても動かず、また、function HandleClose() {
の上にalert("test")と記述するとこれは動きました。
またDefualt.aspxに直接[2.]の記述をしたところ動作しました。
これらを総合するとmaster pageではonunloadを扱えないという
結論にたどり着いたのですが、あっていますでしょうか。
もし、間違いでしたらどなたか 対応方法をご教授いただけませんでしょうか。
回答
-
手元で試してみたところ、Masterページを使った場合も直接Default2.aspxといったファイルに記述した場合も
onunloadの中でalertを呼び出すことはできませんでした。
HandleClose自体は呼び出されているのが確認できたので、onunload、つまり現在のウィンドウを消した後だと
alertウィンドウ自体を表示できない、という状況になっているのではないかと考えています。なお、onunloadの変わりにonbeforeunloadを利用すると、Masterページを使っても、直接記述しても
alertウィンドウを表示させることができました。ちなみに試したのはIE9です。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)
- 回答としてマーク dgi dgi dgi 2012年8月2日 13:41
すべての返信
-
手元で試してみたところ、Masterページを使った場合も直接Default2.aspxといったファイルに記述した場合も
onunloadの中でalertを呼び出すことはできませんでした。
HandleClose自体は呼び出されているのが確認できたので、onunload、つまり現在のウィンドウを消した後だと
alertウィンドウ自体を表示できない、という状況になっているのではないかと考えています。なお、onunloadの変わりにonbeforeunloadを利用すると、Masterページを使っても、直接記述しても
alertウィンドウを表示させることができました。ちなみに試したのはIE9です。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)
- 回答としてマーク dgi dgi dgi 2012年8月2日 13:41
-
> onbeforeunloadに変更したところ対応できました。
Master Page を使用しているか否かで動作が違うという話はどう
なったのでしょうか?それから、多分、以下のページを参考にしてコードを書いたと思
いますが、この通り実装すれば、ページを閉じるまたは別のページ
に遷移するたびにサーバー側の AbandonSession 静的メソッドが
呼び出され、セッションが破棄されるので、onunload のままでも
目的は果たせるのではないですか?Calling a Page Method when the Browser Closes
http://stackoverflow.com/questions/1091622/calling-a-page-method-when-the-browser-closes -
SuferOnwwwさま
ご返答おそくなり大変申し訳ありません。
Master Page を使用しているか否かで動作が違うという話に関してですが、結論としてはMaster Pageを
使用しても動作の確認ができました。
(onunloadの記述部にスペルミスがありました。)
>それから、多分、以下のページを参考にしてコードを書いたと思
>いますが、この通り実装すれば、ページを閉じるまたは別のページ
>に遷移するたびにサーバー側の AbandonSession 静的メソッドが
>呼び出され、セッションが破棄されるので、onunload のままでも
>目的は果たせるのではないですか?はい。上記に関してもおっしゃるとおりです。
再度onunloadでも稼動するかどうか確認をしてみたく思います。