2016-03-24 18 views
0

新しいページを開くリンク$("#english")の場合は、次のコードを使用して、新しいページを同じページのスクロール位置に移動します。ありました。ブラウザとしてSafariを使用して新しいページを同じページのスクロール位置

if(localStorage.getItem('scroll')) 
    { 
     window.scrollTo(0, parseInt(localStorage.getItem("scroll"))); 

    } 



     $("#english").on("click",function() 
     { 
      localStorage.setItem("scroll", document.body.scrollTop); 
     }); 

window.localStorage.clear(); 

これはうまく動作しますが、Firefoxで新しいページは、トップページのOPから始まり、同じページのスクロール位置に移動しません。誰でも、どう?このクロスブラウザーではどのように証明できますか?

答えて

1

理由は、firefoxはdocument.body.scrollTopに対して0を返します。
代わりにFirefoxはdocument.documentElement.scrollTopを使用しますが、Safariは動作しません。

いくつかのブラウザでは機能する可能性がありますが、他のブラウザでは機能しない可能性があります。最高の作品window.pageYOffset私の経験で

(IE> = 9)

+0

Jayms、共有のための素晴らしい、感謝を!これは、今私のサファリとFireFoxで動作します。したがって、ブラウザ変数のリストが必要ですか?それについてどうすればいいのですか? – Eddy

+0

一般的な方法は、それらを論理ORで連結することです。例えば、 'var y = window.pageYOffset || document.documentElement.scrollTop || ...しかし、実際には、あなたは 'pageYOffset'でうまくいくはずです – jayms

+0

ありがとう、もう一度! – Eddy

0

だから、これは(Jaymsのおかげで)動作するコードです:

<script> 

/*makes a new page jump to same scroll position as the scroll position when the link is activated*/ 

if(localStorage.getItem('scroll')) 
     { 
      window.scrollTo(0, parseInt(localStorage.getItem("scroll"))); 

     } 

$("#englishflag").on("click",function() 
{ 
    localStorage.setItem("scroll", window.pageYOffset); 
}); 


window.localStorage.clear(); 

    /*END*/ 
</script> 
関連する問題