
Webアプリを開発しています。
セキュリティを含め、いろいろな問題の対処で、最初にログインしたら
windowのサイズ指定のメニューバー無し、アドレスバー無しで
window.openし、その上で全ての画面遷移&処理を行うようにしました。
が、画面の中で、右上の「×」ボタンが押されるとサーバ上に
仮で作成したファイルが残ってしまう場合があります。
システムの仕様上、必要なファイルで「保存」などの別ボタンクリックで本登録になり、その時に仮登録を削除しています。
(当然、画面上に作成した「戻る」や「終了」ボタンクリック時も対処はしています)
「×」ボタンの制御をネットで検索して、onbeforeunload() という関数を入れてみました。
ブラウザにより、clienrXの値が、正になったり負になったりするようで、それらの判断ではなく
幸い(?)、
動いているwindowは自分で指定していてサイズの変更はできないようにしているため
body.clientWidthの値がわかることと、
「×」をされては困るのはある一部の画面のときのみなので、その画面作成(cgi return)のときのみ
Bodyタグに onbeforeunload=="Keikoku()"などと入れて、
function Keikoku( )
{
if( document.body.clientWidth==900 )
alert("!!!"); <-- たとえば
}
}
など、せめて警告だけでもしたいのですが、
(本来は仮ファイルがあったら削除する処理を埋め込みたいのですが・・・)
この方法は、有効とお思いでしょうか?
組み込んだほうがいいのか(方法として合っているのか)どうか 判断がつきかねています。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1さんと被りますがPCのシャットダウンやら回線断やら、希望する手続きを踏まずに中断される可能性はいろいろあるのでやはりサーバ側での対応は必須です。
ついでに、
>セキュリティを含め、いろいろな問題の対処で
>window.openし、その上で全ての画面遷移&処理
こういうのはキケンです。ブラウザってのはクライアント上にあるのでいくらでも加工や不正が可能です。
クライアント側に頼らずサーバ側できちんと対処するべきです。
(Javascriptはより便利にするのにはいいけど、セキュリティ対策とかに使うものじゃぁないと思いますよ)
steel_grayさん、ありがとうございます。
もう4年くらい動いているシステムなんですが、
最近、あるマニアックな方が、mhtファイルで保存し、ちょっと問題がおきたのです。
知識不足でした。
で、暫定(?)としてメニューを消すのと、ショートカットキーを制御する方法を入れているところです。
一応社内ネットワークの中で動いているシステムで、
その方々に
イレギュラーな使い方は日常茶飯事でしているよって言われました。
Webはいろいろな裏技があるし、そういう方々だと、
キー制御することはますます好奇心をあおってしまうかもしれません。^^;
開発当初にそれらも考慮できていればよかったのですが
期間と価格の問題で・・・できませんでした。
サーバ側での対応も検討したいと思います。
ありがとうございました。
No.1
- 回答日時:
消せなかったファイルはたぶんそのまま残ってしまうのですよね?
残ったファイルのタイムスタンプをみて、cronなどで定期的に削除する仕組みにすればいいのでは?
おそらくバツボタンだけじゃなくて、画面遷移中にPCシャットダウンしても、おなじことがおこるのではと思います。
これは好みかもしれませrんがfunction の関数名の先頭が大文字なのが気持ち悪いです。
junbiokさん、ありがとうございます。
自分で書いておきながら、うまく動きませんでした。
(ひとつだけ、画面遷移するボタンがあって、そのときも警告が出てしまう・・・)
確率的には少ないですが、別clientから
同じ仮ファイル名を使用する場合があり、残ってた仮ファイルを参照してしまうのを防ぎたかったのですが
仮ファイル名がシステム的にユニークにはできなかった(別端末から同一IDでログインOK)のです。
かなり、設計的にまずいんですが、今の時点では直すことはできなくて・・・。
今のところ、そういう使い方をする人はでていないので・・・助かっていますが。
タイムスタンプを見て、過去に作成した仮ファイルなら削除する・・・としても微妙ですよね。
(他端末での正当なファイルを消してしまう?)
やっぱり無理ですかね。。。
Webのアプリって難しいですね。
※関数名の先頭大文字のご指摘、知りませんでした!
以後気をつけたいと思います!ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- 電子マネー・電子決済 QUICPayの登録ができない。 4 2023/06/10 10:57
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- その他(gooサービス) dアカウントを登録できません 1 2023/03/03 23:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッション切れでのリクエスト...
-
三菱GOTの画面切り替えについて
-
プルダウン形式でリンク先を選ぶ
-
Webアプリを開発しています。
-
PDFファイルを表示するサブ...
-
Ctrl+F4を無効にしたい
-
画面の再表示
-
Sessionがnullになりません。
-
FormのsubmitでFormの内容がnull
-
system("cls")について
-
GetWindowRect()が正しくない。
-
画面を隠す・消す方法を教えて...
-
ZOOMでオンラインミーティング
-
ツールバーについて
-
ボタンが活性化の場合とは、ボ...
-
初心者です。一つのformで2つの...
-
ログイン時でセッションでのユ...
-
自動フリガナ機能を実装したい
-
Servletへフォームから配列を送...
-
ASPとCGIの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Java-jspの画面入力値保持について
-
登録後、呼び出し元ページに戻...
-
C# ログイン画面からメイン画面...
-
【C#】 FormClosingのイベント...
-
FormのsubmitでFormの内容がnull
-
location.hrefでページ切替時の...
-
ASP.NET 画面遷移前の状態を保...
-
Javaプログラミングの質問にな...
-
java初心者です。 画面Aで情報...
-
遷移元を判定したい!
-
セッション切れでのリクエスト...
-
画面を隠す・消す方法を教えて...
-
window.open()使用サブウィンド...
-
【JavaScriptわからない】1クリ...
-
MFCプログラミング
-
javaのstrutsを使った画面遷移...
-
子画面でもう一つ教えて下さい
-
CSVダウンロードでウィンド...
おすすめ情報