JavaScriptに関する質問です。

たとえば、1.htmlと言うページのwindow.onloadイベントで、location.href="2.html";と言う命令を実行して、2.htmlに遷移させます。

1.html -> 2.html

この時IEでは、バックボタンが有効になって、バックボタンを押すと1.htmlに遷移して、結局2.htmlに戻ってきます。

Firefoxではバックボタンが有効にならず、履歴に1.htmlは残らないようです。

Gmailでは、inboxを表示している時にバックボタンを押すと、いったん別のページに移ってから、inboxのページに戻ってきます。

同様な機能を、自分のサイトに実装したいと思っています。

実現方法をご存知の方がおられましたら、よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:2007/02/20 17:10:00
  • 終了:2007/02/21 14:24:29

ベストアンサー

id:coliss No.1

coliss回答回数79ベストアンサー獲得回数102007/02/20 17:27:16

ポイント100pt

「location.href」ではなく、「location.replace」と記述すれば、履歴を残さないで移動することができます。

id:taka21st

履歴を残したくないのではなく、残したいのです。

location.hrefやlocation.assign()を使えば、履歴に残るはずなのですが、onloadイベントで実行すると、Firefoxでは履歴に残りません。

2007/02/20 18:04:35

その他の回答(2件)

id:coliss No.1

coliss回答回数79ベストアンサー獲得回数102007/02/20 17:27:16ここでベストアンサー

ポイント100pt

「location.href」ではなく、「location.replace」と記述すれば、履歴を残さないで移動することができます。

id:taka21st

履歴を残したくないのではなく、残したいのです。

location.hrefやlocation.assign()を使えば、履歴に残るはずなのですが、onloadイベントで実行すると、Firefoxでは履歴に残りません。

2007/02/20 18:04:35
id:j_kimi No.2

j_kimi回答回数32ベストアンサー獲得回数42007/02/20 17:33:11

ポイント20pt

onloadイベントではなく

<meta http-equiv="refresh" content="0;url=1.html">

で飛ばせばIEでもBACKボタンは有効にならないと思います。

id:taka21st

質問が分かり難くてすみません。

僕が問題にしてるのはFirefoxの方です。

Firefoxで、BACKボタンを有効にする方法を教えて下さい。

2007/02/20 18:03:03
id:j_kimi No.3

j_kimi回答回数32ベストアンサー獲得回数42007/02/20 18:07:19

失礼しました。

setTimeout("location.href='2.html'",1000);

ではいかがでしょうか。

id:taka21st

setTimeout()を使っても駄目でした。

Firefoxのサイドバーで履歴を表示させながら実験してみたところ、1.htmlの履歴は残っているのですが、Backボタンが有効になりません。

僕の使っているFirefoxは、バージョン2.0.0.1です。

2007/02/20 19:00:24
  • id:coliss
    失礼しました、問題を読み違えていました。

    試したみたところ、onloadイベントではFirefoxは履歴を残さないようです。
    j_kimiさんと同じですが、タイマー処理setTimeout("location.href='2.html'",1);で試したところ、Firefox2で履歴を残しました。

    参考までに、リファラ実験室も紹介しておきます。
    http://www.teria.com/~koseki/memo/referrer/
  • id:taka21st
    colissさん、コメントありがとうございます。
    j_kimiさんの返信にも書きましたが、履歴は残っているのですが、BACKボタンが有効になりません。
    Firefox2でこの現象が起きています。
    例えばGmailでは、ログイン画面からURLが以下の様に推移しています。
    https://www.google.com/accounts/ServiceLogin
        ↓
    https://www.google.com/accounts/CheckCookie <- 一瞬だけ表示される。
        ↓
    http://mail.google.com/mail/ <- inboxが表示されてる。

    inboxが表示されている画面でBACKボタンを押しても、inboxの画面から抜け出る事はありません。
    (BACKボタンを押した瞬間に、CheckCookieのURLに飛んでるかは不明。)

    例えば、www.google.comを表示させた状態で、アドレスバーに1.htmlと打ち込めば、
    http://www.google.com/
        ↓
    http://localhost/1.html
        ↓
    http://localhost/2.html

    と履歴に登録され、2.htmlが表示されます。

    この状態で、IEでBACKボタンを押せば、1.html -> 2.html と遷移して、結局2.htmlが表示されます。

    しかしFirefox2では、www.google.comに移動してしまいます。

    僕の目的は、Firefox2でBACKボタンを押しても、2.htmlが表示されるようにしたいです。
    (正確に言うと、2.htmlを再度読み込ませたい。)

    何か方法があれば教えて下さい。
    (同一の方が5回まで回答できる様に変更しました。)







  • id:coliss
    ようやく意味が分かりました。

    下記でいかがでしょうか。

    画像のオンロードにlocation.hrefの関数を仕込みます。
    &lt;img src="dot_blank.gif" onload="locationTest();"&gt;

    関数はこんな感じで。
    function locationTest(){
    location.href='2.html';
    }

    これを1.thmlに記述し、Firefox2で試したところ、
    履歴には、
    Google
    1.thml
    2.thml
    が残りました。

    Backボタンは有効になっており、Backボタンを押しても2.htmlが表示されます。

  • id:j_kimi
    ウチのFirefoxが古かったので最新版に更新後、
    colissさんの手法を試してみたところ
    Backボタン有効で、押しても2.htmlに飛ばされました。
    ただし「Backボタンを素早く連打する」と
    googleまで戻りました。
    http://td200wr.zapto.org/html/work/1.html

    結果的に私は役に立たず、すいませんでした。m(__)m
  • id:taka21st
    colissさん、j_kimiさん、ありがとうございました。
    これで、一つ仕事が片付きました。^_^;
    また機会があれば、よろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません