2014-11-24 29 views

Odpowiedz

5

Mając ten kod HTML:

<a href="#test">link</a> 
<div id="test"></div> 

można uniknąć przewijania do elementu div i zamiast przewijania do góry okna za pomocą tego kodu:

$("a").on("click", function(e) { 
    e.preventDefault(); 
    window.scrollTo(0, 0); 
}); 

EDIT:

Możesz spróbować dodać to:

var firstVisit = true; 
$(window).scroll(function() { 
    if (firstVisit) { 
     window.scrollTo(0, 0); 
     firstVisit = false; 
    } 
}); 
+0

Dzięki, ale problem nie występuje, gdy klikam w cokolwiek, a raczej kiedy "odwiedzam" stronę. – drake035

+0

@ drake035 Edytowałem odpowiedź. Nie wiem, czy jest to najbardziej efektywny lub najlepszy sposób, ale wydaje się, że działa. – Dim13i

+0

Thx, ale to nie działa. – drake035

11

Co musisz zrobić, to przechowywać hashtag do późniejszego wykorzystania, a następnie usunąć, aby przeglądarka nie miała niczego do przewijania.

Ważne jest, aby nie umieszczać tej części kodu w funkcjach $() lub $ (window) .load(), ponieważ byłoby za późno, a przeglądarka już przeniosła się do znacznika.

// store the hash (DON'T put this code inside the $() function, it has to be executed 
// right away before the browser can start scrolling! 
var target = window.location.hash, 
    target = target.replace('#', ''); 

// delete hash so the page won't scroll to it 
window.location.hash = ""; 

// now whenever you are ready do whatever you want 
// (in this case I use jQuery to scroll to the tag after the page has loaded) 
$(window).load(function() { 
    if (target) { 
     $('html, body').animate({ 
      scrollTop: $("#" + target).offset().top 
     }, 700, 'swing', function() {}); 
    } 
}); 
+1

Natknąłem się na błąd z FF, w którym używałem przepełnienia-max-y na div z naprawdę długą listą, FFwould przewinął w dół, gdzie ukryty węzeł byłby w domenie. Używałem tylko trzech pierwszych linii kodu (a nie komentarzy), co poprawiło mój problem z FireFox. – wintercyborg