質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2745閲覧

他のページに遷移してブラウザの戻るボタンを押した際にflexsliderの現在地をページ遷移前の状態に保持したいです。

hiro421

総合スコア63

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2015/05/20 04:13

編集2015/05/20 04:34

flexsliderを使用してサイトを制作しています。
スマートフォン、PCなどで戻るボタンを押した際にflexsliderの現在地をJSなどを利用してページ遷移前の状態にすることは可能なのでしょうか?
可能であればどのような処理をすればよいかが見当もつかず。。
ご教授いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro421

2015/05/20 13:35

ShunsukeIzui様 ありがとうございます! 希望する動きが実現できました!! 本当に助かりました。。。 WebStorageに関しては無知だったので大変参考になりました。 今後ともよろしくお願いいたします!
orange0190

2015/05/20 13:38

すみません。 少し間違いがありました。 次の個所を直して利用してください。 22行目 startAt: slidePosition, を startAt: 0, に直してください。
hiro421

2015/05/21 08:14

ありがとうございます!!
guest

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
orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro421

2015/05/20 08:59

ご回答ありがとうございます! 大変参考になります。 ちなみに同ページに3つのスライダーを設置するため、 もしお時間ありましたら複数用のコードもご教示いただけますと幸いです! ご検討よろしくお願いいたします!
orange0190

2015/05/20 09:05

すべてのスライダーに同一のクラスが設定されているということでよろしいですね。
hiro421

2015/05/20 09:55

はい、同一のクラスがついています!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問