2012-07-14 20 views
6

Myślałem, że po kliknięciu przycisku Odśwież, przeglądarka miała zresetować stronę na szczyt? Używam akordeonu js, a po odświeżeniu zamyka on akordeon, ale nie zmienia położenia strony na górze.Załaduj ponownie przeglądarkę nie resetuje strony do góry

http://imip.rvadv.com/index3.html

+2

Nic wspólnego z JavaScript, to operacja domyślna przeglądarka – freefaller

+0

Chrome przyzwyczajenie zresetować przewijania górę strony jeśli go odświeżyć. –

Odpowiedz

9

Cóż, jak widać, nie :)

Ale można zmusić go z jakimś prostym jQuery:

$(document).ready(function(){ 
    $(this).scrollTop(0); 
}); 

EDIT:

jedynym sposobem, który wydaje się działa w IE 9, 12 FF i Chrome 20.0 jest następujący:

$(document).ready(function(){ 
    $('html').animate({scrollTop:0}, 1); 
    $('body').animate({scrollTop:0}, 1); 
}); 

Dziwne jest to, że gdy próbowałem przewijanie elementów bezpośrednio bez stosowania jakichkolwiek animacji (czyli $('html').scrollTop(0)), to nie działa. Ponieważ czas trwania jest ustawiony na 1 milisekundę, użytkownik niczego nie zauważy.

Byłbym szczęśliwy, gdyby ktoś mógł rzucić trochę światła na to - dlaczego przewijanie działa tylko z animacjami?

+1

To działa w FF i Chrome, ale nie w IE – imakeitpretty

+0

@imakeitpretty Zobacz moje zmiany. –

+0

W IE9 nadal widzę, jak się skacze. Podskakuje do góry, a następnie przeskakuje z powrotem tam, gdzie miał zacząć. Chciałbym zobaczyć coś nieco płynniejszego. Przesunięcie do góry byłoby miłe, ponieważ to, co robi reszta mojego akordeonu. – imakeitpretty

6

Przeglądarka przewinąć do miejsca, gdzie były przed reload, jako próbę wygody. Jest to przydatne tylko na zbyt długich stronach.

można "naprawić" to tak:

window.onload = function() {document.body.scrollTop = document.documentElement.scrollTop = 0;}; 
+0

Działa to w FF, ale nie w Chrome, aw IE działa podnoszone. Rodzaj ekranu migocze, zanim zostanie poprawnie wykonany. – imakeitpretty

2

podstawie Ostatni komentarz comonpyke i własnych badań Polecam

$(document).ready(function(){ 
    $('html, body').scrollTop(0); 

    $(window).on('load', function() { 
    setTimeout(function(){ 
     $('html, body').scrollTop(0); 
    }, 0); 
}); 
}); 
  • Pierwszy scrollTop zwoje wczesne
    • po dokumencie gotowe zwoje
  • drugie scrollTop późne
    • po załaduj wydarzenie
      • i po Timeout
10

Spróbuj tego, jeśli żadna z powyższych pracował. To oszuka przeglądarkę, która myśli, że znajdowała się na górze dokumentu przed odświeżeniem.

$(window).on('beforeunload', function() { 
    $(window).scrollTop(0); 
}); 
Powiązane problemy