- 締切済み
history.back スクリプトオフのブラウザで表示させない方法ありますか?
history.back=戻る 機能を使いたいのですが、JavaScriptをオフにしているブラウザでは、表示されないようにするにはどのような「方法」「スクリプト」を使えばいいのでしょうか? ボタンを表示させるブラウザを振り分けるスクリプトで オフの場合とオンの場合で読み込む外部スクリプトを振り分ければよいのか?と漠然と考えているのですが 記述方法が分かりません。。。 <input type="button" value=" 戻る " onClick="history.back()"> 以外で戻るスクリプトがあれば教えてください。 ◎動作させたい環境: NN 4.7*~7.1 IE 4.01~6.0
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- koutarou504
- ベストアンサー率44% (182/407)
まずスクリプトがオフという事なので、スクリプトで処理する事は出来ません。 そしてスクリプトはクライアント側(閲覧者の環境)で動くので、サーバー側で動く CGI 等での制御も不安定ではないかと。 で、1つは #1 の方の提示の様にオンオフで別々の記述を用意する。 もう1つは、 <a href="~" onClick="history.back(); return false;" onkeypress="history.back(); return false;">戻る</a> スクリプトがオンならイベントにて false が返りリンク先へは行きませんので。 (history.back(); は有効です。) 当然スクリプトがオフならイベント自体が無効なのでリンク先へ行きます。 で、前者と後者の利点,欠点は、 スクリプトにエラーがあった時に前者だとオンオフ用が共に表示されませんが後者だとオンオフ関係なくリンクが生き残ります。 ステータスバーへのリンク先表示は前者では偽りはありませんが後者は back() が有効でもリンク先を表示します。一応、ステータスバーを書き換える処理も出来ますが、ブラウザによっては無効だったりその機能だけ無効にしたり出来たりと・・・。 で、結局理想は、 <script type="text/javascript"> <!-- document.write('<input type="button" value=" 戻る " onClick="history.back()">'); // --> </script> <a href="~">サイトトップに戻る</a><br> <a href="~">カテゴリトップに戻る</a><br> と、ほとんど #1 の方の提示で、ただ <noscript> でなくオンオフに関係なくリンクを用意という点が違うだけです。 これによりスクリプトが誤動作しても どこかしらに戻れます。
- yambejp
- ベストアンサー率51% (3827/7415)
PHPやCGIで、HTTP_REFERERの値を元にHTML に埋め込む手はありますが、これも確実ではありません。
お礼
ありがとうございます。 >PHPやCGIで、HTTP_REFERERの値を元にHTML >に埋め込む手はありますが、これも確実ではありません。 確かに大本のシステムに手を加えないと 難しそうですね。。。 もっと大規模な開発のときには、ぜひとも検証させていただきます。
- leaz024
- ベストアンサー率75% (398/526)
スクリプトがOFFになっている場合、history.back() と同じ動作をさせる方法はありません。 また、スクリプトがOFFなら外部スクリプトも動かないので、ON/OFFで振り分けることもできません。 スクリプト依存の内容を、スクリプトOFFの場合に表示しないようにするには、それ自体をスクリプトで出力するようにします。 <script type="text/javascript"> <!-- document.write('<input type="button" value=" 戻る " onClick="history.back()">'); // --> </script> また、スクリプトがOFFの場合の内容は <noscript> ~ </noscript> に書きます。 <noscript> ブラウザの「戻る」ボタンで戻ってください。 </noscript> とか、 <noscript> <a href="~">サイトトップに戻る</a><br> <a href="~">カテゴリトップに戻る</a><br> </noscript> のような感じ。
お礼
ありがとうございます。 確かに、スクリプトがオフになっている時点で、振り分け機能が使えるはずはありませんよね。。。基本的な点が抜けていました。。。 <script type="text/javascript"> をつかった記述方法が分からず <noscript>が使えていなかったので 教えていただいたスクリプトで希望通りの動作が得られると思います。 本当にありがとうございました。
お礼
ありがとうございます。 <a href="~" onClick="history.back(); return false;" onkeypress="history.back(); return false;">戻る</a> こんな記述方法もあるのですね 非常に参考になりました。 ステータスバーへのリンク先表示が必須ではない、コンテンツの時にはこちらも試してみます。 ありがとうございました。