ウィンドウのスクロール位置をjs+Cookieで保存する
- 2017.06.09
- Coding JavaScript
- Cookie, スクロール
ページをまたいだ場合、ページでリロードを行う処理をする場合に表示位置を固定したい場合に用いる。
記述例)Cookieを保存するjsにより、変数指定が若干変わる。下記はそれぞれ案件に併せて若干修正済。
■https://github.com/js-cookie/js-cookie を使用する場合
<script> $(function(){ var key = 'keep-position-'+location.pathname; // Cookieに値があればスクロール+Cookieをリセット if($.cookie(key)){ setTimeout(function(){ $(window).scrollTop($.cookie(key)); $.removeCookie(key); },400); } // クリックで発火 $(document).on('click', '.wpfp-link', function(){ keepPosition(); }); // スクロール位置をCookieに保存 function keepPosition(){ $.cookie(key, $(window).scrollTop(), { expires: 1 }); } }); </script>
■https://github.com/carhartl/jquery-cookie を使用する場合
<script> $(function(){ // Cookieに値があればスクロール+Cookieをリセット if($.cookie("SCROLL")){ setTimeout(function(){ $(window).scrollTop($.cookie("SCROLL")); $.removeCookie($.cookie("SCROLL")); },200); } // クリックで発火 $(document).on('click', '.wpfp-link', function(){ keepPosition(); }); // スクロール位置をCookieに保存 function keepPosition(){ $.cookie("SCROLL", $(window).scrollTop(), { expires: 1 }); } }); </script>
◯ページ固有のcookieを記録したい
// ページ番号 var Num = window.location.pathname.split('/')[3] // 全体パス var p = window.location.pathname.replace(new RegExp("(?:\\\/+[^\\\/]*){0,1}$"), "/"); Cookies.set(Num,Num,{ path: p });
◯ページ遷移した時に高さを保持
$('#btn').click(function() { keepPosition(); }); var key = 'keep-position-'+location.pathname; function keepPosition(){ Cookies.set(key, $(window).scrollTop()); } if(Cookies.get(key)){ setTimeout(function(){ $(window).scrollTop($.cookie(key)); Cookies.remove(key); },0); }
◯パラメータごとでの判定
// パラメータ取得 var params = []; var param = location.search.substring(1).split('&'); for(var i = 0; i < param.length; i++) { params[i] = param[i].split('='); } var target = 'name'; var value; for(var i = 0; i < params.length; i++) { if(params[i][0] == target) { value = params[i][1]; break; } } switch (value) { case 'aaaa': Cookies.set('param1','aaaa'); break; case 'bbbb': Cookies.set('param2','bbbb'); break; case 'cccc': Cookies.set('param3','cccc'); break; }
◯json(配列)使うのやりたい
var obj = { a : 'aaa', b : 'bbb', c : 'ccc' } Cookies.set('json',JSON.stringify(obj)); var read_obj = JSON.parse(Cookies.get('json')); console.log(read_obj);
参考サイト
-
前の記事
特定の文字列に対して自動でリンクを作成する 2017.05.31
-
次の記事
WP Favorite Postsの設定方法 2017.06.13