WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ブラウザの「戻る」という操作を捕捉する方法

0:[投稿] tete [2005/03/06 14:36 ][環境:win2000, IE6 linux perl]

ページを遷移するのが遅かったのとページ間で変数を維持するのが楽だったので、

1つのページに複数のブロックを用意して、

<html>
 <div id="page_1">最初のページ   </div>
 <div id="page_2">次のページ    </div>
 <div id="page_3">次の次のページ  </div>
 <div id="page_4">次の次の次のページ</div>
</html>

リンクをクリックされると "page_1" を消し、"page_2"を表示。
またクリックされると "page_2" を消し "page_3" を表示という形で
ユーザー的にはページを進むという形で作成していたのですが、、、、


 ページを戻るという作業の考慮を忘れていました!(>_<)


ブラウザの「戻る」や、マウスの「戻る」ボタンを捕捉する方法は無いでしょうか?

(限られた範囲での使用なので、win2k / winXP の JavaScript は常にonという前提です)。


1:[回答] ooo [2005/03/07 21:33 ]

historyで前のページを取得して、次に表示されたページがそのページだったら戻ったとみなす。というのはどうでしょう?
隠しフレーム等でパラメタを渡してあげて、自分と同じだったら。ということ。

> ページ間で変数を維持するのが楽だったので
私は、ここに興味を持ちましたが、隠しフレームまたはURLで渡す。くらいしか思いつかないのですが、楽ってどうやったのでしょう?


2:[回答] 舞の海 [2005/03/08 01:49 ]

>>1
>historyで前のページを取得して、次に表示されたページがそのページだったら戻ったとみなす。というのはどうでしょう?
と言う仕掛けは何処に仕掛けるんでしょう?
質問者の仕掛けはそもそもページ移動していないのでは?

>>0
>リンクをクリックされると "page_1" を消し、"page_2"を表示。
の逆を行なえば良いだけでは?

そもそもタイトルが間違っているよね?
ページを進む戻るではなく、表示ブロックを切り替えるだけでしょ?


3:[回答] tete [2005/03/08 14:23 ]

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

ページは実際には1つも移らないのです。ユーザーの感覚からすると通常どおり
ページの遷移があるように見えて、実際には1つのページ内で表示エリアを
display = "none"して次を "block" して移動しているのです。

変数を維持するのが楽というのは、cookieもgetも文字数制限がありますし、
そもそも文字しか渡せません。インスタンス化したオブジェクトなども保持したい
なと思い考え付きました。画面の遷移も速くできますし。
実際にはフレームを使った方法もありますけど今回はそれは使っていません。

-----------------------------------------
ユーザーの感覚では通常のページ遷移ですので、ページを戻りたい場合、ブラウザの
「戻る」やマウスの「戻る」ボタンを押すのが自然な動きです。

ですので、その「戻る」のイベントを取得して実際には戻らず、上記と逆の
動きであたかも「戻る」ような動きを作りたいと思っています。

"戻る"のリンクを作ってそれを押すようにするのもいいんですけどね。
でもユーザーの自然な動きとしては多分ブラウザの「戻る」だと思うんですね。

... 無理そうですね(>_<)


4:[回答] ふじ [URL] [2005/03/08 16:24 ]

似たような話が ajax がらみであったなあと。
http://la.ma.la/blog/diary_200502270128.htm
参考になるかどうかわかりませんが。


5:[回答] ooo [2005/03/08 23:01 ]

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9710&forum=7
@ITで見つけました。
Top > @IT会議室 > Insider.NET 会議室 > ブラウザの戻るボタンのイベント取得について。。


6:[完了] tete [2005/03/09 09:10 ]

>>4
ありがとうございます。
location.hashを使ったやりかただと結局ページのリロードになるのでインスタンス等は消えてしまいますよね。
あとでもっと詳しく見てみようと思います。

>>5
ありがとうございます。要するに無理ということですね(*_*)


この方法は諦めます。


7:[完了] 舞の海 [2005/03/09 10:29 ]

独自ナビゲーションをさせるのであれば、コントロールを隠したウインド内で表示してはどうでしょう?

実際にはショートカットや右クリックから移動できてしまいますが、そこまでする人はそれほど居ないでしょうし。
そのウインド最上位に、専用のコントロールを作ってやれば擬似的には制御できると思います。

しかし google maps は凄いなぁ・・・


8:[完了] tete [2005/03/09 15:02 ]

ありがとうございます。

コントロールを隠したウィンドウではあまりやりたくありません。
なぜなら私がそういうページが嫌いだからです(>_<)

あれは作成者の一方的な意思の押し付けであり、好ましいとは思いません。

私の質問に対しての「こうしたら出来る」という回答にこのような書き方を
してしまい申し訳ありません。

私的な考えですが、ユーザーには特別には考えさせない作りが良いものだと思っております。
なので今回その「意識させない」でブラウザの戻るの制御が出来ないようなので、
この方法は諦めました。

回答頂いたのにすいません...。


9:[完了] gun [2005/03/09 17:22 ]

クローズしたのにごめんなさい。

iframeのsrcを置き換えるとhistoryに残ります。
これを利用し、隠し置いたiframeのonLoadを拾うことで
「戻る」ボタンに対応させることはできませんか?
(想像なので試していません。ごめんなさい)


10:[完了] 舞の海 [2005/03/09 19:53 ]


概念的なことなので無視してもらっても構いません。

>コントロールを隠したウィンドウではあまりやりたくありません。
自分も経験が有り気持ちは判りますが、自分で「ページを戻る」という表現をしていると言うことは、ユーザーにはページ移動していると錯覚をさせている事になりませんか?

考え方次第ですが、利用者にページ移動と言う概念ではなく「次を読む」という概念を与えさせれば、ページ移動を捕捉する必要は無くなるかもしれません。

それに、独自コントロールですが、十分に設計された適切な機構であれば利用者にブラウザのコントロールを隠しても問題は無いと思います。

もっとも自分のやり方が有るでしょうから、利用者がより便利な方法を選択したほうが良いと思います。


11:[完了] tete [2005/03/09 20:21 ]

>>9
ありがとうございます!!。iframeを併用するアイデアは面白いですね。
本体のページで擬似的な画面遷移を行い、隠しフレームで本当に模擬ページを移動させる。

これなら理論的に矛盾がないし出来そうですね。
ありがとうございました。


>>10
そうですね。概念を与えれば出来るかもしれません。
とりあえず今回は gun さんから頂いたアイデアで概念を与えずとも実装できそ
うなのでそれでやってみます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World