こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ブラウザのアドレスが変更されたら

Webのシステムを開発しているのですが、そのWebシステム
内でデータベースの排他処理などを行っており、システム
のページが表示されているブラウザで、アドレスを直接
書き換えて別のインターネットのページを表示されると
そのデータベースの排他解除をできません。
ブラウザのアドレス(URLの入力部分)を書き換えられた
とかいう情報がJavaScriptで取得できないでしょうか?
ブラウザのアドレスがシステムのページのパス名に変更
された場合に、排他処理を解除するとかいった処理が
行いたいのです。

大変、こまっているのでどんな情報でも結構ですので
ご存知の方がいたら教えていただけませんでしょうか?

ちなみに当方はASP.NETで開発を行っています。
ブラウザはIE6.0以上をターゲットにしています。

よろしくお願いします。

投稿日時 - 2003-09-09 21:14:39

QNo.650919

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

非常に消極的な考え方かもしれませんが…

その排他処理を行うシステムにアクセスする前段階で、JavaScriptでロケーションバーやメニューバーのない別ウィンドウを開いて、そのウィンドウ内でその排他処理を行うデータベースのページを展開するという方法では駄目でしょうか?
ブラウザのロケーションバーの内容を取得したり、移動先のURLをキャッチするのは、JavaScriptではできないような気がするので、もとよりロケーションバー自体を隠してしまう方が、素人考えでは手っ取り早いような気がするのですが…

失礼しました。

投稿日時 - 2003-09-13 01:33:04

お礼

アドバイスありがとうございます。
最終的な判断としては、教えていただいたような方法を
とるか、復旧用の機能を作成して、排他処理の復旧を
行う方法を考えているのですが、なんとか自動的な処理
で対応できないかと苦悩している毎日です。

また、なにかいい案が浮かんだりしたら教えてください。

投稿日時 - 2003-09-15 10:34:23

ANo.3

たびたび、すみません。#1,2の者です。
以下の方法を自分で試したところ、ダメでした。
切り替え時の取得が直前なので、移動先のアドレスを取れないようです。

お騒がせでした。すみません。

投稿日時 - 2003-09-11 21:21:33

ANo.2

#1の者です。
「location.href」で現在のアドレスが取得できますが、これを使ってアドレスの比較をするというのはどうでしょうか?
ページ読みこみ時にまず取得し、ページ切り替え時に再び取得して比較してみれば、システム内かどうかがわかるのではないでしょうか?
文字列として取得するはずなので、「indexOf」を使って検索すれば良いと思います。

こんな感じでどうでしょうか。

投稿日時 - 2003-09-11 21:01:09

ANo.1

イベントハンドラの「onunload」を使うとどうでしょうか。
アドレスを書き換えたタイミングでは無理ですが、
その後に「Enter」を押すと機能します。
つまり他のページに切り替わる直前のタイミングとなります。

また、あらかじめアドレスバーを表示させないように
ウィンドウを開かせるという方法もあると思います。

参考にでもなれば。

投稿日時 - 2003-09-11 15:02:09

お礼

回答ありがとうございます。
onunloadイベントは、ページの切り替わり時に必ず
発生するので、それだけでは、アドレスパーに入力
されてシステム以外のページが表示されたかどうかの
切り分けができません。
システム内でもかなりのページ遷移が発生するので、
システムで使用するWebサーバのホスト名と異なるページ
がアドレスに入力されてEnterを押されたといった感じ
の情報が取得したいなと思っています。

投稿日時 - 2003-09-11 15:46:11

あなたにオススメの質問