• 締切済み

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

Webのシステムを開発しているのですが、そのWebシステム 内でデータベースの排他処理などを行っており、システム のページが表示されているブラウザで、アドレスを直接 書き換えて別のインターネットのページを表示されると そのデータベースの排他解除をできません。 ブラウザのアドレス(URLの入力部分)を書き換えられた とかいう情報がJavaScriptで取得できないでしょうか? ブラウザのアドレスがシステムのページのパス名に変更 された場合に、排他処理を解除するとかいった処理が 行いたいのです。 大変、こまっているのでどんな情報でも結構ですので ご存知の方がいたら教えていただけませんでしょうか? ちなみに当方はASP.NETで開発を行っています。 ブラウザはIE6.0以上をターゲットにしています。 よろしくお願いします。

みんなの回答

noname#199778
noname#199778
回答No.4

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

onti
質問者

お礼

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

noname#4886
noname#4886
回答No.3

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

noname#4886
noname#4886
回答No.2

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

noname#4886
noname#4886
回答No.1

イベントハンドラの「onunload」を使うとどうでしょうか。 アドレスを書き換えたタイミングでは無理ですが、 その後に「Enter」を押すと機能します。 つまり他のページに切り替わる直前のタイミングとなります。 また、あらかじめアドレスバーを表示させないように ウィンドウを開かせるという方法もあると思います。 参考にでもなれば。

onti
質問者

お礼

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

関連するQ&A