2010-05-10 19 views

Odpowiedz

89

To "fragment" lub "nazwa kotwicy". Możesz użyć do połączenia z część dokumentu. Zazwyczaj po utworzeniu linku do strony przeglądarka otwiera ją u góry strony. Ale łączysz się z sekcją w połowie, możesz użyć fragmentu do połączenia z tym nagłówkiem (lub cokolwiek innego).

Jeśli na stronie nie ma tagu <a name="whatever"/>, przeglądarka połączy się z górą strony. Jeśli fragment jest pusty, połączy się on również z górą strony.

Dla fragmentu tylko<a href="#">Link name</a>, to jest to po prostu link do górnej części bieżącym stronie.

Często widzisz ten rodzaj linku używany w połączeniu z javascript. Zgodny ze standardami HTML wymaga atrybutu href, ale jeśli zamierzasz obsłużyć żądanie za pomocą javascript, to "#" służy jako rozsądny właściciel miejsca.

+1

+1 Chociaż oficjalny termin jest fragmentem URL, a nie "odniesienia hash": http://www.w3.org/TR/WD-html40-970708/htmlweb.html#h-4.1.1 –

+0

Tak , Zmieniłem go na "fragment" w mojej odpowiedzi, ponieważ to właśnie używa większość ludzi. Nigdy nie wiedziałem, że ma "oficjalną" nazwę :) –

+2

Dlaczego przeglądarki traktują to jako "przejdź do góry strony": Technicznie, zmieniłeś stronę. Po kliknięciu linku zauważysz, że # jest faktycznie dodany do adresu URL na pasku adresu, a kliknięcie przycisku Wstecz spowoduje jego ponowne usunięcie. Nie powiedziałbym, że jest to link do części dokumentu, raczej link do miejsca w dokumencie. W przeciwnym razie, w zasadzie to samo, co pisałem ... – animuson

2

Powoduje przejście do samej strony. Jest często używany z linkami, które faktycznie uruchamiają JavaScript.

22

... wystarczy dodać kilka dodatkowych przydatnych wskazówek.

Możesz uzyskać do niego dostęp i zmienić go za pomocą document.location.hash w JavaScript.

Może to wskazywać na nazwie kotwy (np <a name="top"></a>) lub do elementu o odpowiednim identyfikatorem (np <div id="top"></div>).

Samo wyświetlenie (na przykład <a href="#" onclick="pop()">popup</a>) oznacza zwykle, że do uruchamiania JavaScript jest używany link. To jest zła praktyka.

Każdy element a powinien mieć wartość href wskazującą prawidłowy zasób. Jeśli nie istnieje, rozważ użycie innego elementu, takiego jak button.

+1

To dobra uwaga, nie jest to szczególnie dobra praktyka ... ale tylko dlatego, że nie jest dobra, nie oznacza, że ​​nie będzie ona używana w ten sposób na całym świecie. miejsce :) –

+1

@alex, jeśli to kiepska praktyka, to powiedz nam, jaka będzie zamiast tego praktyka * dobra *. –

+0

@Kyralessa Było to w następnym akapicie. W każdym razie dokonałem edycji, więc mam nadzieję, że jest jaśniejsza. – alex

9

oznacza link do kotwicy.

I thougt Chciałbym również wspomnieć o coś innego:

Korzystanie „#” jako href za link, który aktywuje JavaScript jest złe, ponieważ przewija stronę do góry - co prawdopodobnie nie jest to, co chcesz. Zamiast tego użyj javascript:void(0).

+0

+1 za to, że kliknięcie tych linek zmusza stronę do przewinięcia do góry. –

+4

Nie potrzebujesz już kotwicy. Od HTML5 (i może HTML 4) dowolny element ze znacznikiem może być celem identyfikatora fragmentu. Zobacz dokument HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#scroll-to-fragid –

+1

Nie używaj 'javascript: void (0)' either - użyj "przycisku", jeśli nie jest to link. – alex

6

Znak funta (#) wskazuje lokalizację kotwicy na stronie. Na przykład, jeśli to ten gdzieś na stronie:

<a name="foo"></a> 

, czy ostatnio:

<div id="foo">*part of page*</div> 

a następnie kliknij na link na stronie, która ma href #foo będzie poruszać do kotwicy o nazwie lub div o identyfikatorze foo.

Jednakże, jeśli masz tylko href #, doprowadzi to do początku strony.