2013-05-03 17 views

Odpowiedz

4

Użyj javascript.

Rozwiązanie 1

Po załadowaniu dokumentu, przejdź do "hash" lub kotwicy, który chcesz

<script type="text/javascript"> 
function load() 
{ 
window.location.hash="mylocation"; 
} 
</script> 

Rozwiązanie 2

w nagłówku:

<script type="text/javascript" language="javascript"> 
    function moveWindow(){window.location.hash="mylocation";} 
</script> 

Na znacznika body:

<body onload="moveWindow()"> 

A twoja kotwica:

<a name="mylocation"></a>

+0

Dziękuję bardzo! Potrzebowałem sposobu na ustawienie kotwicy w adresie URL Twig, aby przejść do określonego miejsca na stronie, jeśli zostanie zgłoszony wyjątek. Nie można tego zrobić, więc zamiast tego wstawiam zmienną twig do znacznika body i ustawię ją na pusty ciąg. Następnie, jeśli wyjątek zostanie zgłoszony, zapełniam zmienną łańcuchową javascriptem, jak pokazano w Twojej odpowiedzi (window.location.hash = "foo"), i dodasz ją do renderowania strony: . – paidforbychrist

9

Coś prostego jak to zrobi to

<body onload=' location.href="#myanchor" '> 
<a id='myanchor' href='#'>anchor text</a> 
1

Oto 2018 aktualizacja, która jest nieco bardziej dynamiczny .

Jeśli chcesz pobrać URL, wyciągnij kotwicę z adresu URL i przenieś stronę do tej kotwicy, możesz uruchomić javascript przy ładowaniu strony.

if (window.location.href.indexOf('#') == 0) { 
    let hash = window.location.href.split('#')[1]; 
    let hashTop = document.querySelector(`#${hash}`).offsetTop; 
    window.scrollTop = hashTop; 
} 

Istnieje również ten sposób, który jest nieco bardziej zwięzły.

if (location.hash) { 
    let target = location.hash; 
    window.scrollTop = document.querySelector(target).offsetTop; 
} 

Jeśli nie kompilacji ES6 z babel, wystarczy zmienić słowo kluczowe let do var. Działa to również w przypadku WordPress, które doda slash w adresie URL przed zakotwiczeniem.