flexsliderを使用してサイトを制作しています。
スマートフォン、PCなどで戻るボタンを押した際にflexsliderの現在地をJSなどを利用してページ遷移前の状態にすることは可能なのでしょうか?
可能であればどのような処理をすればよいかが見当もつかず。。
ご教授いただけますと幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
複数対応と戻る以外の操作でも、このページに遷移してくるとスライドが途中から開始してしまう問題に対応(不完全)したものを載せます。
lang
1var storage = sessionStorage; 2var slidePosition = storage.getItem("slidePosition") || 0; 3var saveHisLen = storage.getItem("historyLen"); 4var positions; 5if(saveHisLen){ 6 saveHisLen = parseInt(saveHisLen, 10); 7} 8if(slidePosition !== 0){ 9 positions = slidePosition.split(","); 10} 11$(function(){ 12 if(slidePosition !== 0 && saveHisLen == history.length){ 13 $(".flexslider").each(function(index, element){ 14 $(this).flexslider({ 15 animation: "slide", 16 startAt: parseInt(positions[index], 10), 17 }); 18 }); 19 } else { 20 $(".flexslider").flexslider({ 21 animation: "slide", 22 startAt: slidePosition, 23 }); 24 } 25 $(".jump").on("click", function(e){ 26 getPosition(); 27 }); 28}); 29 30//各スライドの現在位置を取得し、保存 31function getPosition(){ 32 var arr = new Array(); 33 $(".flex-viewport").each(function(index, element){ 34 $(element).find("ul > li:not(.clone)").each(function(index, element){ 35 if($(element).hasClass("flex-active-slide")){ 36 arr[arr.length] = index; 37 return false; 38 } 39 }); 40 }); 41 storage.setItem("slidePosition", arr.join(",")); 42 storage.setItem("historyLen", history.length); 43}
以上になります。
質問があれば、またコメントください。
投稿2015/05/20 10:14
編集2015/05/20 12:24総合スコア1698
0
以下でどうでしょうか。
lang
1var storage = sessionStorage; 2var slidePosition = parseInt(storage.getItem("slidePosition") || 0; 3$(function(){ 4 $(".flexslider").flexslider({ 5 animation: "slide", 6 startAt: slidePosition, 7 }); 8 9 $(".jump").on("click", function(e){ 10 getPosition(); 11 }); 12}); 13 14//スライドの現在位置を取得 15function getPosition(){ 16 $(".flex-viewport ul > li:not(.clone)").each(function(index, element){ 17 if($(element).hasClass("flex-active-slide")){ 18 storage.setItem("slidePostion", index); 19 return false; 20 } 21 }); 22}
注意としては、WebStorageを利用しているので、WebStorageを利用できない環境では動作しないことと今回はjumpというクラスを持っている要素のクリックイベントで、スライドの現在の位置を取得しているのでその他のイベントでは、少し手を加えないといけないことです。
また、スライドは1つしかないことを想定してます。
複数スライドがある場合には、少し別のコードが必要になります。
必要なら考えてみますので、コメントをください。
追記
すみません。以上のコードには、次の問題もありました。
・戻る以外の操作でも、このページに遷移してくるとスライドが途中から開始してしまう。
ですので、これは参考程度に留めておいてください。
投稿2015/05/20 05:47
編集2015/05/20 07:20総合スコア1698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/20 09:05
2015/05/20 09:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/20 13:35
2015/05/20 13:38
2015/05/21 08:14