WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScript/ブラウザメニューの赤い×[中止]を無効化したいのですが…

0:[投稿] Jun [2004/11/04 10:09 ][環境:IE6 OS=UNIX(Sun)、洩烱三舗=WebLogic]

JSP+ServletでWebアプリを開発しており、入力チェックなど
ブラウザ側で出来ることはJavaScriptで書いてます。

質問の意図ですが、あるリクエストがサーバー側に送られ、
その処理結果が返ってくる前(つまり、次画面に遷移する前)に、ブラウザのメニューバーにある赤い×[中止]を押されると、画面とサーバー側のステイタスが矛盾してしまうので、[中止]
ボタンを押させないようにしたい(と、同時に<ESC>キー押下
での[中止]も無効化させたい)のですが、このような制御をJavaScriptで行う方法をご存知の方、いらっしゃいましたら
教えてください。


1:[回答] レトロ [2004/11/04 10:35 ]

メニューバー、ツールバーを非表示に。

キーはキーコードを取得して、ESCキーだったら無効にする処理を入れる。

window.document.onkeydown=onKeyDown;
function onKeyDown(e)  {        
 if (navigator.appName == "Microsoft Internet Explorer") {
  if(event.keyCode == 27) return false ;
 } else if (navigator.appName == "Netscape") {
  if(e.which == 27) returan false;
 }
}


2:[完了] Jun [2004/11/04 10:49 ]

回答ありがとうございます。とりあえずその方法で
お客さんに提案してみます>レトロさん

元から絶ってしまう(ブラウザ内の中止ハンドラ自体
の無効化)なんてことは出来ないんでしょうね、きっと。


3:[完了] ピルゲイツ [2004/11/04 13:21 ]

ブラウザを利用する以上そういう方法はイレギュラーだし、表面上の見た目だけを変更したに過ぎません。
出来るだけそのような仕様にしない事を前提に、サーバ側でStatus204を送出するなり、新しい画面に移行するか注意書きとして最新の内容を確認する様に促すのが正しいかと。

http://www.studyinghttp.net/status_code#Code204


4:[完了] Jun [2004/11/04 14:03 ]

えーっと、ステータスコード204を返すことによって、なぜ
問題が解決できるのかが理解できていないんですが、要は、
「中止ボタンを押されて困ったことが起きる作り自体が問題」
ということですね?


5:[完了] 雲 [2004/11/04 16:58 ]

>えーっと、ステータスコード204を返すことによって、なぜ
>題が解決できるのかが理解できていないんですが、要は、
>「中止ボタンを押されて困ったことが起きる作り自体が問題」
>ということですね?

その返答の仕方は どうかと。
誰も答える気を無くすとは、ご自分で思いませんか?


6:[完了] Jun [2004/11/04 17:35 ]

ご気分を害してしまったようで、大変申し訳ございません。


7:[完了] ピルゲイツ [2004/11/04 19:40 ]

>「中止ボタンを押されて困ったことが起きる作り自体が問題」
そういう事です。

勘違いも有りましたので、Status204は無視してください。

余談ですが、Webアプリではページキャッシュの制御も重要になるかと思いますので、把握しておいた方が良いですよ。
もひとつ、クライアント側でのチェックはあくまでも予備チェックなのでサーバ側でもう一度チェックする必要が有り、結局クライアント側では大したコトは出来ないです。

知っていたらごめんなさい。


8:[完了] Jun [2004/11/05 09:35 ]

いろいろ示唆ありがとうございます>ビルゲイツさん

>余談ですが、Webアプリではページキャッシュの制御も重要

サーバ側のjavaソースをgrepしてみましたら、どんな
リクエストでも通るフィルターに
((HttpServletResponse)response).addHeader("Cache-Control", "no-cache");
というコードを別の開発メンバーが書いていたのでOKと思います。
>サーバ側でもう一度チェック
フレームワークにStrutsを使ってますので、チェックが必要
なところはvalidatorを使おうと思います。
いろいろありがとうございました。


9:[完了] a [2005/06/09 09:50 ]

aaaaaaa


回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World