ウィンドウのスクロール位置を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