2012-12-19 9 views
7

Próbuję zaktualizować hash, a następnie załaduj ponownie stronę.Przejdź do linku do anchor po window.location.resload

$('a[name="' + fragment + '"]').remove(); //don't jump before window reloads 
window.location.hash = fragment; 
window.location.reload(true); 

Po ponownym załadowaniu okno nie przeskakuje do znacznika zakotwiczenia. Jak mogę to naprawić?

+0

Dlaczego należy użyć skrótu, a następnie odśwież stronę ? – adeneo

+1

** Myślę, że ** jesteś lepszy dzięki zmianie właściwości 'href': window.location.href = url + '# your-hash';' –

+0

Założeniem jest przeładowanie strony, a następnie przeskoczenie ekranu do określonego miejsce na stronie –

Odpowiedz

1

MOZILLA DEVELOPER NETWORK sugerują, używając replace:

function reloadPageWithHash() { 
    var initialPage = window.location.pathname; 
    window.location.replace('http://example.com/#' + initialPage); 
} 
2

Jest to dość trywialne do osiągnięcia w jQuery jeśli przeładowania strony. Wystarczy sprawdzić właściwość window.location.hash podczas ładowania strony.

$(document).ready(function() { 
    if(window.location.hash) { // just in case there is no hash 
     $(document.body).animate({ 
      'scrollTop': $(window.location.hash).offset().top 
     }, 2000); 
    } 
}); 

Jedynym zastrzeżeniem jest to, że twój skrót odpowiada id elementu, do którego przewijasz.

Demo here

0

@Tim S. moim zamiarem jest absolutnie nie do kradzieży grzmot, ale Twój komentarz bardzo niski klucz powyżej jest moim zdaniem optymalne rozwiązanie na to pytanie, jak to jest proste, czyste i testy z powodzeniem w całej różne przeglądarki. Mam w związku z tym stworzenie odpowiedzi na nim w Twoim imieniu:

window.location.href = url#anchor 

(gdzie url może być bieżącą stronę - lub inny według wymagań)

+1

to NIE przeładuje strony, jeśli adres URL/zakotwiczenie jest taki sam. –