2016-03-24 19 views
0

Yeni bir sayfa açan bir $("#english") link için, yeni sayfayı bir önceki sayfa ile aynı sayfa kaydırma konumuna gitmek için aşağıdaki kodu kullanıyorum (içindeki bağlantı ile birlikte) oldu. Bu iyi çalışan bir tarayıcı olarak Safari kullanarakAynı sayfaya yeni sayfa kaydırma pozisyonu

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

    } 



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

window.localStorage.clear(); 

ama FireFox ile yeni sayfa üst op adresindeki sayfayı başlar ve aynı sayfa kaydırma konumuna gitmek DEĞİLDİR. Lütfen, lütfen? Bu çapraz tarayıcıyı nasıl kanıtlayabilirim?

cevap

1

Nedeni, firefox document.body.scrollTop için 0 değerini döndürür.
Bunun yerine, Firefox, document.documentElement.scrollTop'u kullanmanızı ister; ancak bu, Safari'de çalışmaz.

Bazı tarayıcılarda çalışan ve başkalarında olmayan çok sayıda olası özellik var. Tecrübelerime göre

window.pageYOffset (IE> = 9)

+0

Jayms, fantastik, teşekkür !! Şimdi safari'm ve FireFox'um çalışıyor. Yani tarayıcı değişkenlerinin bir listesi gereklidir? Bunun için nasıl giderim? – Eddy

+0

'un ortak bir yolu, onları mantıksal bir OR ile zincirlemektir, 'var y = window.pageYOffset || document.documentElement.scrollTop || ... 'Ama gerçekten," pageYOffset " – jayms

+0

ile iyi olmalısınız, tekrar teşekkürler !!! – Eddy

0

Yani bu (Jayms sayesinde) çalışır koddur en iyi şekilde çalışır: Paylaşım için

<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> 
İlgili konular