WEB相談室

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

タイトル:次頁の履歴があることを判別したい(JavaScript)

andi [WriteDate : Wed Nov 29 12:07:49 2000]

お世話になります。

ブラウザの「戻る」で戻った場合、
現在はhistory.forward();で押し戻すように対応しているのですが、
これを特定の頁に飛ばすようにしたいと思っています。

そこでhistoryについて調べたのですが、
NSにはhistory.nextがありましたがIEでは見つかりませんでした。
(試験方法が悪かったのかNSでも取得はできませんでしたが)

なんとか良い方法は無いものでしょうか。

Nobu3 [WriteDate : Wed Nov 29 12:32:35 2000]

history.go(1);

で、できませんでしたか?


Nobu3 [WriteDate : Wed Nov 29 12:35:04 2000]

あ、ごめんなさい。
勘違いです・・・(^^;;;


andi [WriteDate : Wed Nov 29 23:11:56 2000]

Nobu3ありがとうございます。

書き忘れていましたができればIE4 and NS4以上なのですが・・・

if(次頁の履歴がある){
    location.href="〜";
}

な感じでやりたいのですが。
historyで出来なさそうですので、無理なのでしょうか。

andi [WriteDate : Wed Nov 29 23:13:40 2000]

あ・・・呼び捨てになってました。
Nobu3さん失礼しました。

バギンズ [WriteDate : Thu Nov 30 00:37:31 2000]

自分で何処まで進んだかを変数に保持しておいてチェックするとかではダメですか?

フレーム化して、FRAMESETのHTML内に用意した変数に parent.変数名 で参照や設定して、どこまで進んでいるか確認するとか。

shin' [WriteDate : Thu Nov 30 12:35:47 2000]

質問なんですけど…、

>if(次頁の履歴がある)
>{ 
>  location.href="〜"; 
>}

これはどこに書かれるのでしょうか?

戻るページがおされたページで?
それともフレームセットで?
(何イベントで?) 

andi [WriteDate : Thu Nov 30 12:56:30 2000]

バギンズさんありがとうございます。

フレームセット内部での移動時には次の履歴判定は必要無いのですが、
フレームからブックマークなどで移動された際に対処が必要になります。
ので・・・変数を保持していてもクリアされるようです。


shin'さんありがとうございます。

フレームセットで呼び出します。
↓のような感じです。

<script>
次の履歴判定
</script>
<frameset>
<frame src="a.html">
<frame src="b.html">
</frameset>

このフレームセットが表示されている限りは
次の履歴を判定する必要はありません。


バギンズ [WriteDate : Thu Nov 30 15:07:29 2000]

次の履歴判定が、フレームセットじゃなければできそうだったのですが...
onUnloadがどうにかできれば...

<html>
<head>
<script>
var flg = 1;
history.forward();
setTimeout('CheckFwd()',500);
function CheckFwd()
{
flg = 0;
}
function UnloadProc()
{
if (flg) top.location.href='test12_1.html';
}
</script>
</head>
<body onunload="UnloadProc();">
page
</body>
</html>

andi [WriteDate : Thu Nov 30 17:54:27 2000]

バギンズさん、ありがとうございます。
帰宅後に試して、結果報告させて頂きます。

バギンズ [WriteDate : Fri Dec 1 12:51:48 2000]

うっかりしてました。
FRAMESET要素にもonUnloadイベントの指定ができたんですね。(^_^;)
じゃあ、それで解決?

andi [WriteDate : Fri Dec 1 12:59:42 2000]

バギンズさんありがとうございます。
昨日はまともな時間に帰宅出来ませんでした。

onUnload()の話は次の履歴があるかでなく、
フレームセットページから抜けたときにってことですね。

ふむ。元々の考えとは違いますがOnUnloadも含めて
色々と考え直して見ます。

Nobu3 [MAIL] [URL] [WriteDate : Fri Dec 1 13:00:50 2000]

質問の内容とは違いますけど、
もし、戻られたくないのならば、JavaScriptの
location.replace()
で、履歴を上書きしながら進んでいくのはどうでしょう?



バギンズ [WriteDate : Fri Dec 1 13:11:23 2000]

すいません。
実際に試したら、IEでは、FRAMESET要素のonUnloadが効きませんでした。(^_^;)
ネスケだと効きます。

フレーム内のHTMLのBODY要素にonUnload指定するのならうまくいきました。

バギンズ [WriteDate : Fri Dec 1 13:29:35 2000]

>andiさん
私が書いた方法の説明をしてなかったですね。
わかるかなって思って省略してしまいました。(^_^;)

処理的には、現在のhistory.forward();で押し戻す処理を応用しただけです。

history.forward(); する事により、次の履歴がある場合は、次のページに移りますよね。
このときに、onUnloadで指定ページに移動させます。

次の履歴がない場合は、ページが移動しませんので、タイマーでフラグをオフにする事で、onUnloadで指定ページに移動する処理が動かないようにしています。

andi [WriteDate : Fri Dec 1 13:56:14 2000]

Nobu3さんありがとうございます。

フレーム内に表示されるページは全て
JavaScriptで書き出したページですので今回は使えそうにありません。

前頁から蓄積した変数を利用して頁を書き出すため、
一度フレームから抜けられてブラウザの「戻る」で戻られると、
未定義変数にアクセスしようとしてエラーになってしまうんです。


バギンズさんありがとうございます。

説明の意味、やっと分かりました(^^。
フレーム内のBODYに設定して試してみようと思います。

Nobu3 [MAIL] [URL] [WriteDate : Fri Dec 1 14:01:07 2000]

>バギンズさん
このスクリプトは、うちのIE5.5だと、期待通りに動かないようです。
ただ戻れないようになっただけでした・・・。
フレームじゃなく、普通のHTMLですけど・・・。

一応、いくつか上にあるソースをHTMLごとコピーしたんですけどね。
で、「function」の部分を先に書いてみたけど、結果は同じでした。

以上、報告でした。

バギンズ [WriteDate : Fri Dec 1 14:19:27 2000]

>Nobu3さん
え、IE5.5だと駄目ですか?(;_;)シクシク

>ただ戻れないようになっただけでした・・・。 
って事は、BODY の onUnloadが効いてないんですかね?

今はIE5.01の環境しかないので、私も帰宅してから調べてみます。
ご報告ありがとうございました。m(_ _)m

Nobu3 [URL] [WriteDate : Fri Dec 1 14:31:25 2000]

>って事は、BODY の onUnloadが効いてないんですかね?
どうやら、そのようです。念のため、スクリプト部分をbodyの後ろにかいて、その上で
onUnload="alert('OK')"
を試してみましたが、反応無しでした。

バギンズ [WriteDate : Fri Dec 1 14:48:26 2000]

なんか、IE5.5のバグっぽいですね...
ちなみに、使用したのは、IE5.5SP1でしょうか?

Nobu3 [WriteDate : Fri Dec 1 15:23:37 2000]

>ちなみに、使用したのは、IE5.5SP1でしょうか?
バージョン : 5.50.4134.0600IS
更新バージョン : 0
です。つまり、「そうではない」ってことですね。

で、色々試したところ、
  history.forward();

  setTimeout("history.forward();", 1);
に変えると期待通りに動きました。
よくわかりませんが・・・。


バギンズ [WriteDate : Fri Dec 1 15:29:54 2000]

>Nobuさん
>つまり、「そうではない」ってことですね。 
まぁ、SP1でも一緒かもしれません(^_^;)

>setTimeout("history.forward();", 1); 
>に変えると期待通りに動きました。 
へーそうなんですか。
それにしても、この方法を見つけられるのがすごいですね。(^_^;)

バギンズ [WriteDate : Fri Dec 1 22:47:52 2000]

>Nobu3さん
やはり、SP1でも一緒でした。(笑)

そして
>setTimeout("history.forward();", 1); 
の方法でうまく動くのも一緒でした。

andi [WriteDate : Sun Dec 3 21:05:59 2000]

バギンズさん、Nobu3さんどうもありがとうございました。

ちょっと休日も忙しくなって時間が作れませんが、
このまま利用したいと思います。お手数おかけしました。
回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]