ページ履歴を残すには?

このQ&Aのポイント
  • ページ履歴を残すためのスクリプトを探している
  • 現在見つけたスクリプトはWindows XP IE6でしか動作しない
  • 他のブラウザやOSでもページ履歴を残す方法はあるか
回答を見る
  • ベストアンサー

ページ履歴を残すには?

こんにちは。 1→2→3→4→5にページ履歴を残すようなスクリプトを作りたいと思い、いろんなサイトを見ていると、下記のようなスクリプトを見つけたのですが、 <head内> historyDelimiter = " → "; function addHistory(item) { var h = []; if(document.cookie != "") h = document.cookie.split(historyDelimiter); h.push("<a href=\"" + document.URL + "\">" + item + "</a>"); document.cookie = h.join(historyDelimiter); } function showHistory() { document.write(document.cookie); } <body内> <script type="text/javascript"> <!-- addHistory("1ページ"); showHistory(); //--> </script> これでやると、Windows XP IE6でしか表現されませんでした。 しかも履歴がどんどんと伸びていきます。 例えば、1→2→3→4→5まで行き2をクリックすと1→2みたいには出来ないのでしょうか? それとMacのFirefoxでの使用も多々ありますので、こちらでも表現できないものでしょうか? cgiやphpなどのプログラムが使用できないためjavascriptでやろうと思っているのですが、javascriptではなく他になにかいい手段はないでしょうか? ちなみにhtmlのページ数も400ページほどありますが、手作業で1ページずつ打っていったほうが無難でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30334
noname#30334
回答No.1

Cookieを使うスクリプトなのですから、有効期限や読み取りを許可するサーバーやページの指定を行うべきです。 その辺のセキュリティが成されていないので、FireFoxではじかれているのではないかと思います。 「document.cookie」で検索してみて下さい。 >1→2→3→4→5まで行き2をクリックすと1→2みたいには出来ないのでしょうか? Cookieデータを配列に入れてpushしているだけなので、当然増えていくだけですね。 配列データを読んで、条件を元に書き換える処理が必要です。 >手作業で1ページずつ HEADに書く方は、外部ファイルにしましょう。 そうしないと、変更する時大変ですよ。

momokocyan
質問者

補足

tdsh様 早速のご回答ありがとうございます。 document.cookieでいろいろ拝見させていただいたのですが、初心者のわたしには、どこをどう直せば分かりませんでした。勉強不足で申し訳ありません。教えていただける範囲内で結構ですので、もう少しご教授願えないでしょうか?宜しくお願い致します。

関連するQ&A

  • 順番号をつけたhtmlファイルのページ推移

    順番号をつけたhtmlファイルへページ推移させたいんですが、現在のファイルの番号を取得して次ページ(++)と前ページ(--)へ数値を代入する方法がわかりません。また、最小値と最大数に達したときにindex.htmlに移動するようにしたいです。 未熟な上、書いてみましたが、動きやしません… [次ページへ] <SCRIPT LANGUAGE="JavaScript"> function.next;{ document.links[sample(i).html]; for (i=0; i<最大値; i++); } </SCRIPT> <a href="javascript:next">次へ</a> [前ページへ] <SCRIPT LANGUAGE="JavaScript"> function.next;{ document.links[sample(i).html]; for (i=0; i>0; i--); } <a href="javascript:back">戻る</a> </SCRIPT> 「もし、最大値と最小値に達したとき、index.htmlに移動する」 はわかりませんでした。 ご教授いただければ幸いです。

  • 配列要素をHTMLに書く方法?

    <html><body> <h6>11111 11111 11111</h6> <h6>22222 22222 22222</h6> <h6>33333 33333 33333</h6> <script type="text/javascript" language="javascript"> <!-- var item = document.getElementsByTagName('h6'); document.open(); document.write("文字列のテスト"); document.write(item); document.close(); // --> </script> </body></html> ●上記のプログラムをプラウザで見ると、以下の様に表現されました。 11111 11111 11111 22222 22222 22222 33333 33333 33333 文字列のテスト[object HTMLCollection] 私の期待では、[object HTMLCollection]と表現されるのではなく、 「11111 11111 11111,22222 22222 22222,33333 33333 33333」と表現して欲しかったです。 配列要素をHTMLに書くには、どうすれば良いのでしょうか?

  • ページが切り替わるスクリプトで最初から指定のページを表示させる

    <html> <head> <script type="text/javascript" language="JavaScript"> <!-- JavaScript小技集 2005. 6.17 function showthis(obj) { if(!obj) return false; if(document.getElementById) { document.getElementById("item1").style.display = "none"; document.getElementById("item2").style.display = "none"; document.getElementById("item3").style.display = "none"; document.getElementById(obj).style.display = "block"; } else { return false; } } // --> </script> <style type="text/css"> #item1,#item2,#item3 { display: none; } </style> </head> <body> <form> <select onchange="showthis(this.value)"> <option selected="selected">記事を選ぶ</option> <option value="item1">記事1</option> <option value="item2">記事2</option> <option value="item3">記事3</option> </select> </form> </body> <html> これなんですが、これを貼ってあるページを読み込んだ際、最初からitem1を表示した状態にしたいのですが どうすればよいのでしょう?

  • どれか一つのinputが消えても合計を出したい

    javascriptで値段を計算させるものを作ったのですが、 HTMLの方で計算する対象が無くなるとエラーが発生してしまいます。 エラーが出ないように組んでないので当たり前なのですが^^; どれかひとつの<input name="h0X" />を消しても問題なく合計金額を出せる ようにする方法が分かりません。ご存じでしたらお教え願います。 ---------------------[keisan.js]----------------------- function total(){ var f1=document.forms["form"].elements; var j01=f1["h01"].value.split(",").join("")-0; var j02=f1["h02"].value.split(",").join("")-0; var j03=f1["h03"].value.split(",").join("")-0; f1["name_boxtotal"].value=setComma(j01+j02+j03+""); } ---------------------[test.html]----------------------- <html> <head> <script src="keisan.js"></script> </head> <body> <input name="h01" /> <input name="h02" /> <input name="h03" /> <div onclick="total()">合計</div> </body> </html> -------------------------------------------------

  • JavaScript制御のフォームを1ページに複数設置するには?

    先日こちらのサイトで、1つのセレクトボックスで1度に複数の情報をCGIに渡す方法を教えて頂き、 <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); document.H1.AA1.value=d[1].slice(0,-1); document.H1.AA2.value=d[0]; document.H1.AA3.value=document.F1.T1.value; document.H1.submit(); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3本セット 100円 <option>7本セット 200円 </select> <input type="button" value="カートへ" onclick="func()"> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="AA1">  ・  ・ <input type="hidden" name="AA3"> </form> というフォームを作ったのですが、同じページに同様のフォームがもう一つ必要になりました。 そこで上記ソースに、フォーム名や変数名を変えたScript <script type="text/javascript"> <!-- function func() { var n = document.F2.S2.selectedIndex; var d = document.F2.S2.options[n].text.split(" "); document.H2.AA4.value=d[1].slice(0,-1); document.H2.AA5.value=d[0]; document.H2.AA6.value=document.F2.T2.value; document.H2.submit(); } // --> </script> を追加し、 これに対応するフォームも追加したのですが、1つめのフォームから「カートへ」でデータを送っても2つめのフォームの内容が送信されてしまいます。 どこをどう直したらよいのでしょうか?

  • 指定した複数のデータを別ページフォームに入れる

    非常に古い回答を参考にしています。2007/11/08 19:08 steel_grayさんが回答されている項目 希望する事は複数 商品一覧のA.htmlのページがあり それをお問合せフオームB.htmlのテキストボックスに投げ入れる スクリプトを希望 A.html <head> </head/> <body> <script type="text/javascript"> function sendQuery(uri,querys){ var query = new Array; for(var x in querys) { query.push(x+'='+encodeURI(querys[x])); } location.href=uri+'?'+query.join('&'); } </script> <input type="button" value="問合せ" onclick="sendQuery('問い合わせページのURL',{'CODE':'ABC001','NAME':'商品名'})"> </body> --------------------------------------- ・問い合わせページ ・・スクリプト(bodyのonloadで呼び出す) B.html <head> </head> <body> <script type="text/javascript"> function setQuery(){ var querys = location.search.replace(/^\?/,'').split(/&/); for(var i=0;querys[i];i++){ var query = querys[i].split('='); document.getElementById(query[0]).value = decodeURI(query[1]); } } </script> <!--値を受取るフォーム部品 --> <input type="hidden" id="CODE"> <input type="hidden" id="NAME"> </body> それぞれCODEとNAMEのテキストボックスにデータが入りません 希望は<input type="hidden" id="CODE">にCODEのデータが入る <input type="hidden" id="NAME">にNAMEのデータが入る スクリプトを希望します。 何卒ご回答よろしくおねがいします。

  • クッキーの保存と確認をしようとしたら

    すみません質問です。 クッキーの保存と確認をするスクリプトを組んだのですが、 保存ボタンを押したらscriptエラーが出てしまいます。 エラーの内容は-------------------------- ライン:1 文字:1 オブジェクトを指定してください。 ---------------------------------------- というものです。 以下のソースのどこに問題があるのでしょうか。 スクリプトが間違っているのなら直そうと思うのですが、 <script>~</script>を消去してもエラーになってしまいます。 お暇な人、教えてください。お願いします。 <html> <head> <title>COOKIE TEST</title> <script language=javascript> function set_c(key){ document.cookie = "dest=" + key ; } function get_c(c_Name){ c_Name += "="; theCookie = document.cookie + ";"; start = theCookie.indexOf(c_Name); if (start != -1){ end = theCookie.indexOf(,";",start); return unescape(theCookie.substring(start + c_Name.length, end)); } return false; } function conf_c(){ get_c(dest); alert(document.cookie.sousin); } function conf_c2(){ alert(document.cookie); } </script> </head> <body> <a href="javascript:set_c('http://www.yahoo.co.jp');">クッキー保存</a><br><br> <a href="javascript:conf_c();">クッキー確認</a><br><br> <a href="javascript:conf_c2();">クッキー確認2</a> </body> </html>

  • 違うページでも同じcookieをロードする

    http://okwave.jp/qa3882347.htmlの質問をさせて頂いた者です。 おかげさまで作りたかったものが作れたのですが、その後別の問題が 起きて悩んでいます。 上記の質問で教えていただいたスクリプトで問題なく作れて作動したのですが、同じスクリプトでデータ内容の違う別のベージでも使いたかったのですが、そうすると同じcookieをロードしてしまいます。 (内容の重複する物と、まったく違う物等の複数のページで同じスクリプトを使います。) 朝から半日掛かって色々試したり本読んだりしたのですが、例文と構文の記述形式が違って解りませんでした。 function setvalue(o,v){ for(i=0;i<o.length;i++) if(o[i].value==v) o[i].selected=true; } function saveCookie( vn, v, dy ){ if(navigator.cookieEnabled) document.cookie = vn+ '='+ v+ ';expires='+ new Date((new Date()).getTime()+dy*24*3600000).toGMTString(); } function loadCookie(vn){ var rt=''; if( vn && document.cookie ) { var v = document.cookie.split(';'); for(i in v){ v[i].match(/^\s*(.*)=(.*)$/); if( RegExp.$1 == vn) { rt = RegExp.$2; break; } } } return rt; } にあるfunction saveCookie( vn, v, dy ) function loadCookie(vn) の【vn】【v】がcookieの名前と値?と思って 色々試したのですがダメでした。 まったく見当違いなのか、それともそれ以外にも何か指定しないといけないのでしょうか? 初歩的な質問で度々すいませんがよろしくお願いします。

  • 基礎的なif文プログラムが動きません

    お世話になります。 Javascript初心者です。 とても基礎的なif文が動かなくて困っています。 ある名前のクッキーが既に存在していたら、あるページへリダイレクトさせる、というプログラムです。 クッキーの有無を確認するには <script type="text/JavaScript"> function getCookie(クッキー名) { if (document.cookie.length>0) { 実行文 } return ""; } </script> で、いける事が分かりました。 また、一方、リダイレクトするには location.href='アドレス'; で、いける事がわかりました。 そこで、これを組み合わせて、 <script type="text/JavaScript"> function getCookie(クッキー名) { if (document.cookie.length>0) { location.href='アドレス'; } return ""; } </script> とやってみたのですが、これが思う様に動きません。 どうしたら動く様になるのか、教示いただけると幸いです。

  • Cookie情報取得についてです。

    Cookieに書き込んだjavaScriptの情報をhtmlで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script> 最終的には「TEST」を取得したいのですが、よい方法は無いでしょうか?

専門家に質問してみよう