- ベストアンサー
cookieを利用して別ページへ移動前に見ていたタブに戻す方法
- JavaScriptを使用して、cookieを利用してタブの状態を保存し、別のページに移動した後に元のタブを復元する方法について説明します。
- 以下のコードでは、window.onloadイベントハンドラに関数が登録されています。この関数内で、createTab()、showCategory('menu1')、setTabClick('menu1Nav','menu1')などの関数を実行しています。
- createTab()関数では、ul要素を生成し、createListItem()関数を使用して各タブのリンクを作成しています。setTabClick()関数では、リンクがクリックされた時に該当するタブを表示するように設定しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
====== cookie.js ================================================= var COOKIE = { data : {}, expires : null, path : null, domain : null, init : function( ) { this.parse( ); window./*@if(1) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/ 'unload', this.regist, false ); }, regist : function( ) { var cookie = []; for( name in COOKIE.data ) { COOKIE.data.hasOwnProperty( name ) && cookie.push( encodeURIComponent( name ) + '=' + encodeURIComponent( COOKIE.data[ name ] ) ); } COOKIE.expires && cookie.push( 'expires=' + COOKIE.expires.toUTCString( ) ); COOKIE.path && cookie.push( 'path=' + encodeURIComponent( COOKIE.path ) ); COOKIE.domain && cookie.push( 'domain=' + encodeURIComponent( COOKIE.domain ) ); document.cookie = cookie.join( '; ' ); }, set : function( name, value ) { this.data[ name ] = value; }, get : function( name ) { return this.data.hasOwnProperty( name ) ? this.data[ name ] : null; }, parse : function( ) { var cookie = document.cookie.split( /;\s*/ ); var parts, i; for( i=0; i<cookie.length; i++ ) { parts = cookie[ i ].split( '=' ); switch( parts[ 0 ] ) { case 'expires' : this.expires = parts[ 1 ]; break; case 'path' : this.path = parts[ 1 ]; break; case 'domain' : this.domain = parts[ 1 ]; break; default : this.data[ parts[ 0 ] ] = parts[ 1 ]; } } } }; COOKIE.init( );
その他の回答 (2)
- yuu_x
- ベストアンサー率52% (106/202)
すみません、使い方かいてませんでしたね。 関数名、プロパティ名そのままですが、 // 前準備として、有効期限をセットしてやります。Date 型をそのままセットできます。 var date = new Date; date.setDate( date.getDate() + 1 ); // 有効期限 1 日なら COOKIE.expires = date; // そのとき限りで消えてしまってもかまわないようでしたら、セットしなくても大丈夫です。 # この実装いまいちかも。。。 // 保存したいときは、 COOKIE.set( 'shownID', 'menu1' ); など。 // 取り出したいときは COOKIE.get( 'shownID' ); 存在しないときは null が返ります。 データをまとめて消したいときは COOKIE.data = {}; としてください。 # destroy 関数があってもよかったかもしれません。 // path, domain は必要に応じてセットしてください。わからなければ放置で大丈夫です。
お礼
yuu_x 様、お忙しいところ温かいお心遣い、本当にありがとうございます。 ぜひ試させて頂きます。 重ねて、感謝申し上げます。
補足
yuu_x 様、先日は誠にありがとうございました。 まだバタバタして記述を試せていないのですが、goo より【2週間経過の close催促】がありましたので、一旦本スレッドを閉じさせて頂きます(「またお尋ねすることがあるかもしれない」とも思っておりましたが)。 必要あれば、また別スレッドを立てさせて頂きます。 今回は、本当に誠にありがとうございました。
- fujillin
- ベストアンサー率61% (1594/2576)
unloadイベントでそのときのタブの番号をクッキーに保存。 onload時にクッキーのタブ番号を表示(なければデフォルト)。 で、よいのでは? 単純にクッキーへの保存、読出しができればよいだけでしょうから、調べれば解説サイトがいろいろとあると思いますが? (文字数の都合を考えれば、ここでの回答よりも詳細な説明やサンプルも沢山あるはず) http://www.google.com/search?q=javascript+cookie
補足
fujillin 様、コメントありがとうございます。 ご指摘のイベント時に記述を書くこと&ご意見全くごもっともです。本来検索して時間をかけ調べるべきところ、現在別の作業の納期等に追われ半死に状況です。 大変ムシの良い書き込みであることは重々承知しております。 もしお教え頂ける方がいらっしゃれば、 ・目的達成に近いサンプルの解説ページURL or ・説明文抜きで勿論結構ですので、「関数定義」と「そのコール方法」の記述法 を教えて頂ければ、当方まさに「天の助け」の状況です。 御恩は忘れません。 「ふざけんじゃねえ」とご気分を害する場合は、どうかお許し&お流しください。 コメントありがとうございました。
お礼
yuu_x 様、スクリプトを本当にありがとうございます。 心より感謝申し上げます。 少し別作業等落ち着いたら、ぜひ試させて頂きます。 メソッドのコールで分からない点がありましたら、 また書き込みをさせて頂きます。 そのような際は、もしそのときお時間可能でしたら、宜しくお願い申し上げます。 本当に、2度の書き込みに渡り、ありがとうございました。