最新閲覧日:

こんにちわ。

現在、perlにてあるプログラムを作っています。
その中で、数あるCGIファイルをたどっていく際に
どうしても、ブラウザに履歴を残さずに
進ませたいのですが、その方法がわかりません。
言い換えれば、一度進んだら戻れなくしたいわけです。

フレーム化してその中のサブフレームで
遷移させたのですが、
物理的にファイル名が変わった場合、ブラウザの
履歴に残ってしまい、戻ることが可能です。

常に新しいページを開かせてもページが
開く座標を全て同一に指定できないと運用上、
よろしくないと考えます。

どうすればこの問題が解消できるか、
ご存知の方が居られましたら回答いただきたいと
思います。
よろしくお願いします。

A 回答 (2件)

履歴を消す事自体は不可能です。

そのうちブラウザの機能として入るかもしれませんが、現状では出来ませんでしたし(少なくともIEに関してはMSDN NewsのAsk Dr.GUIでその問題が出ていたはず)、できるようになったとしてもすべてのブラウザで可能なわけではないので無意味でしょう(RFCで制定されれば別なんですが)

目的から状況がsubmitページのリロード防止のように思われますので、そのように仮定して話を進めます。
上記の仮定通りであるのであれば以下の方法が使えるかもしれません。
・・・外れてた場合は無視してくださいね(^^;

データを送信するページから、submitページへデータをGET/POSTでなげてやり、受けたページではデータを処理(データベースにストアしたり、メール送ったり色々。要するに本来やりたい事)し、「httpヘッダ上でLocationを使って」別のページに飛ばします。

そうするとwebブラウザ(IE、NN4、Mozzila)ではHttpヘッダのLocationを使ってページジャンプをしているため、ブラウザの履歴にsubmitページ自体は残らない・・・というかLocation先のページとしてデータが残ります。
このため、submit後にリロードされても、Location先のページにしかリクエストは要求されません。
ただし、この方法の場合、URLを指定してsubmitページを指定された場合、問題が出ますので、submitページへのデータ要求はPOSTのみ、パラメータが不正な場合はそれ用の処理をするようにしておくべきでしょう。

一応有名な・・・というか多分GUI系ブラウザはこれで誤魔化せるでしょうが、駄目なブラウザが存在するかも知れません。(テキストブラウザは結構ヤバそうな気がします)

ブラウザ上でやる場合、こう言う問題は出てくるものです。下手に悩むぐらいならJava Appletを使ってClient-Serverにしてしまい、データはすべてApplet内で入れる、とするのが最も良い解決法だとおもいます。
もしくは.NETで作っちゃうとか(笑)
    • good
    • 0
この回答へのお礼

alfeimさん、こんにちわ。

回答ありがとうございました。

なるほど。やはり履歴そのものを消すことは
不可能ですか。
Locationで飛ばす、なるほど参考になりました。
早速試してみたいと思います。
貴重なご意見、ありがとうございました。

お礼日時:2001/10/05 23:43

すみません。

perlの方は、まったく no ideaなのですが、

>常に新しいページを開かせてもページが
>開く座標を全て同一に指定できないと

ということでしたら、
新しく開かれるhtmlに、

<html>
<head>
<title>******</title>
<script language="javascript">
self.moveTo(A,B);
self.focus();
</script>


と記載し、AとBに好きな座標を入れれば、
開くウインドウの位置を指定してあげることはできます。
    • good
    • 0
この回答へのお礼

Naodon1020さん、こんにちわ。

ご回答ありがとうございました。

この方法でなら、履歴を残さず、
かつ、ユーザに感じさせるストレスが
軽減されそうです。

早速この方法を使わせていただこうと
思います。
貴重なご意見、ありがとうございました。

お礼日時:2001/10/05 23:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ