2016-09-15 16 views
0

IOSでは、photoswipeを閉じてページに戻ると、サムネイルをクリックしたときのスクロール位置に戻りません。photoswipeが最後のスクロール位置の代わりに現在のページの最初のハッシュに戻る

代わりに、ページは最初にページを呼び出したときに指定した#にスクロールします。例えば

photoswipeがwww.somepage.html上にある、と私は使用してページに移動した場合:その後、

www.somepage.html#footer 

と終了photoswipeに、ページの#middleにthumnailを上にスクロールしてクリックし、ページはフッタまでスクロールします。

私はphotswipeオプションで歴史を無効にしようとした、と私はまた、使用されたURLからハッシュデータをクリアしようとしました:

//clear hash 
//$(document).ready(function (e) { 
// window.location.hash = ''; 
// window.history.pushState("", document.title, window.location.pathname); 
//  
//}); 

をしかし、それがどれも動いていないようにみえ。ページに#を付けずにページに移動しても、何も問題ありません。

私は、#の代わりにURLに変数を渡して、javascript経由で問題のdivにスクロールする必要があると思いますか?

私は既にスクロールする場所にjavascriptを持っていますが、私はどのようにURLから変数を読み込み、それをJavaScriptの値として使用するのか分かりません。

これが問題の最適な解決方法である可能性が高い場合は、誰でもjavascriptコードの例を挙げることができますか?ここで

は私の現在のスクロールコードです:

$(function() { 
     $('a[href*=#]:not([href=#],[data-toggle],[data-target],[data-slide])').click(function() { 
      if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') || location.hostname == this.hostname) { 
       var target = $(this.hash); 
       target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
       if (target.length) { 
        $('html,body').animate({ 
         scrollTop: target.offset().top 
        }, 1000); 
        return false; 
       } 
      } 
     }); 
    }); 
+0

うーん、誰もが解決策を共有することができれば、まだこの1に苦しん:

ここでは、コードですか? – user3597862

答えて

0

他の誰が同じ問題を持っている場合、私は、クエリ文字列内のページへのdivのidを渡すのではなく#を使用してこの問題を解決するために管理してきました。

$(window).ready(function() { 
 

 
    if (document.location.search.length) { 
 
     target = getUrlVars()["id"]; 
 
     scrollToID('#' + target, 750); 
 

 
    } else { 
 
     return; 
 
    } 
 
    //target = $url().param('id'); 
 
    //if (target == '') return; 
 
    
 
    
 
    
 
}); 
 

 

 
function getUrlVars() { 
 
    var vars = [], hash; 
 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
 
    for (var i = 0; i < hashes.length; i++) { 
 
     hash = hashes[i].split('='); 
 
     vars.push(hash[0]); 
 
     vars[hash[0]] = hash[1]; 
 
    } 
 
    return vars; 
 
} 
 

 

 
// scroll function 
 
function scrollToID(id, speed){ 
 
    var offSet = 100; 
 
    var targetOffset = $(id).offset().top - offSet; 
 
    var mainNav = $('#main-nav'); 
 
    $('html,body').animate({scrollTop:targetOffset}, speed); 
 
    if (mainNav.hasClass("open")) { 
 
     mainNav.css("height", "1px").removeClass("in").addClass("collapse"); 
 
     mainNav.removeClass("open"); 
 
    } 
 
} 
 
if (typeof console === "undefined") { 
 
    console = { 
 
     log: function() { } 
 
    }; 
 
}

関連する問題