- - PR -
ブラウザの戻るボタンのイベント取得について。。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-01 15:54
「使用しないような仕様」ではなく、「運用系で使用しないようにお願いする」です。仕様は「使用されたときは、データの保証をしない」です__; IEAKで「戻る」や「更新」を殺すことができるのかもしれませんが、それはそれで問題ですしねぇ。。。 | ||||||||||||
|
投稿日時: 2004-03-01 16:26
永井です。 「ページの有効期限切れ」と出てしまった場合、有効期限切れなので、その中に何が書いてあろうが無駄でしょう。 これが出るのは、POST送信で、そのResponseにExpireやら何やらが設定されている場合に出るんだったような気がしますが……まあ、とりあえず「有効期限切れ」になってしまったら手は出せません(と思います)。 さて、「有効期限切れ」になっていないケースに限られますが、JavaScriptでback検知が可能です。 以下、「Back」で戻ってきたらAlertを表示してリロードするサンプルです。だいぶ手抜きですが、WindowsのIE6とかなら読めると思います。 まず以下のようなsample1.htmlを用意します。
で、sample2……は何でもいいんですが、とりあえず書いておきます。
以上のようなJavaScriptで「Back」で戻ってきたかが検知出来ます。UAに依存したりする可能性は大なので、あまりアテにならないですが……。 美しくはないんですが、これをちょこちょこ拡張して「バックして、主要項目が変更されないまま再びサブミットが押された場合は再サブミットせずにフォワード」等をやったりしました……。 | ||||||||||||
|
投稿日時: 2004-03-01 18:40
<!−− 無視されたようなので削除 −−>[ メッセージ編集済み 編集者: Gordie 編集日時 2004-03-02 09:48 ] | ||||||||||||
|
投稿日時: 2004-03-01 20:13
Jittaさん、こんばんは。
以前、「戻る」ボタンのイベントというスレッドで、 > SessionとViewStateの両方にカウンタを保持してポストバック毎にインクリメント > し、双方の値が一致するかどうかをチェックする という方法を提案をした事があるんですが、その後実際に、カウンタの不一致を検出した場合はそれをイベントで通知するコントロール(IValidator を実装)を作って使用しています。 #ネックは、セッションタイムアウトなんですが、それはそれでデータの整合性が保証出来ないという事で...。 | ||||||||||||
|
投稿日時: 2004-03-01 22:00
なるほど。。。カウンタ2重持ちですか。それは思いつきませんでした。 私の方のネックは「戻るをしたときに、サーバサイドで追加したスクリプトがまた走って、入力用子画面がまた表示される」なんです。。。これは、防げませんよね? WebアプリにWinアプリのような操作性を求めることが間違っている、とは思うのですが。。。 | ||||||||||||
|
投稿日時: 2004-03-02 01:04
ん?戻るボタンは、Webアプリ特有の操作だと思いますが? # 揚げ足をとってしまいましたが、Jittaさまの仰りたいことはよくわかっているつもりです。 例えば、amazon.comで「戻る」押したからって、『不正な処理です』って表示されたりしたら不安になりますよね。 そういう意味で、「戻る」ボタンを押されても正常に動作するように作ることができるならそれに越したことはありません。 ですが、そこを制限できる環境(イントラ内でのみ利用とか)であれば、真っ先に制限事項として挙げてしまいたい事項です。 とはいえ、「押すな」と書いてあっても押してしまう人はいるわけで。。。 # リンクを押し間違えたときに無意識にBackSpaceを押す癖がついている人とか。私のように。 最低限、データ破壊などの障害を発生させないようにはしておく必要がありますね。 前置きが長くなりましたが、私も考えてみました。 各ページの一番最初で、『window.history.forward();』。 気休め程度にしかなりませんが、シンプルでいいかなと。 # ちなみに、実践で使ったことはまだありませんのであしからず。 | ||||||||||||
|
投稿日時: 2004-03-02 01:30
Jittaさん、こんばんは。
うーん、セッションに何らかの形で画面遷移の情報を保持しておいて、子画面側がそれを見に行って表示内容を制御できるような気もしますが、どうなんでしょう...。 私の方では、入力画面に戻れたり、古い情報が表示されてしまうのはもう、仕方ないと割り切って、その代わりそこから再度ポストされた場合はブロックしてます。 更新系の処理が二重に走るのさえ防げれば、極端な話「不正な処理です。ブラウザを閉じて再度実行して下さい」でも「ログアウトしました。再度ログインして下さい」でも構わないかな、と。 | ||||||||||||
|
投稿日時: 2004-03-13 01:17
ブラウザの情報を保存しない・・・みたいな設定でできたはずです。
たしかあったはずなんだけど忘れました。 けっこうコアなやり方なんでネットで探しても出てこないかもしれません |