2011-10-13 12 views
139

Od czasu do czasu widziałem następujący href używany na stronach internetowych. Jednak nie rozumiem, co to próbuje zrobić lub techniki. Czy ktoś może rozwinąć proszę?Co robi wyrażenie href <a href="javascript:;"></a>?

<a href="javascript:;"></a> 
+2

Możesz wywołać metodę JS z tym, jeśli się nie pomylisz .. javascript: SomeFunction() – Rob

+1

Nie próbuje zrobić niczego, co nie może być lepiej obsłużone przy pomocy odpowiedniej obsługi kliknięcia. Powinieneś tego unikać, ponieważ jest brzydki, niedostępny i spowodował, że ludzie używają schematu 'javascript:', w którym nie powinno być używane ('onclick =" javascript: ... "') – Gareth

+1

Sprawdź to: http: // stackoverflow. com/a/138233/908879 – ajax333221

Odpowiedz

150

Element <a> jest nieprawidłowym kodem HTML, chyba że ma atrybut href lub name.

Jeśli chcesz, aby renderował się poprawnie jako łącze (tj. Podkreślony, wskaźnik ręczny itp.), Będzie to robić tylko wtedy, gdy ma atrybut href.

Tego typu kod jest czasem używany jako sposób utworzenia linku, ale bez podawania rzeczywistego adresu URL w atrybucie href. Deweloper najwyraźniej chciał, aby sam link nie działał, i był to najłatwiejszy sposób, jaki znał.

Prawdopodobnie ma jakiś kod zdarzenia javascript w innym miejscu, który jest uruchamiany po kliknięciu łącza i będzie to, co chce faktycznie się wydarzyć, ale chce, aby wyglądał jak normalny link tagu <a>.

Niektórzy programiści używają w tym samym celu href='#', ale powoduje to, że przeglądarka przeskakuje na górę strony, co może nie być pożądane. I nie mógł po prostu zostawić pustego href, ponieważ href='' jest linkiem do bieżącej strony (tzn. Powoduje odświeżenie strony).

Są sposoby obejścia tych rzeczy. Używanie pustego bitu kodu Javascript w href jest jednym z nich i chociaż nie jest to najlepsze rozwiązanie, działa.

+11

Z ciekawości, czy jest lepszy sposób na zrobienie tego? –

+20

Lepiej było to zrobić, jeśli funkcja zdarzeń zwraca 'return false;' lub 'event.preventDefault()' wtedy akcja 'href' nigdy nie zostanie wywołana, więc możesz umieścić tam coś bardziej sensownego. – Spudley

-1
<a href="javascript:void(0);"></a> 

javascript: informuje przeglądarkę zamiar napisać kod JavaScript

+1

http://stackoverflow.com/a/1293130/681538 – Alex

5
<a href="javascript:alert('Hello');"></a> 

jest tylko skrótem:

<a href="" onclick="alert('Hello'); return false;"></a> 
+2

Rodzaj, ale nie jest to prawdziwe porównanie "jak dla podobnych". Z tego powodu niektórzy wpadają w pułapkę używania go w pierwszej kolejności. – Lankymart

21

zasadzie zamiast korzystając z linku, aby przenieść stron (lub kotwic), stosując ta metoda uruchamia funkcje javascript (s)

<script> 
function doSomething() { 
    alert("hello") 
} 
</script> 
<a href="javascript:doSomething();">click me</a> 

kliknięcie łącza spowoduje uruchomienie alarmu.

21

Istnieje kilka mechanizmów pozwalających uniknąć linku do miejsca docelowego. Ten z pytania nie jest zbyt intuicyjny.

Czystszą opcją jest użycie href="#no" gdzie #no jest niezdefiniowaną kotwicą w dokumencie.

Możesz użyć bardziej semantycznej nazwy, takiej jak #disable lub #action, aby zwiększyć czytelność.

Zalety podejścia:

  • Unika się "Przejście na górze" efekt pustego href = "#"
  • unika się stosowania javascript

Wady :

  • Musisz mieć pewność, że nazwa kotwicy nie jest używana w dokumencie.

Ponieważ element <a> nie działa jako link, najlepszym rozwiązaniem w takich przypadkach nie stosuje element <a> lecz <div> i zapewnienia pożądanego łącza podobny styl.

+6

Podoba mi się również niezdefiniowana kotwica. Kolejną wadą jest to, że dodaje ona kotwicę do historii przeglądarki, więc wybieram użycie pustej metody JS w OP. –

5

Patrz poniżej:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a> 
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a> 
<a href="javascript:;">Nothing happens if there is no javaScript to render</a> 
3

stary wątek, ale myślałem, że wystarczy dodać, że twórcy powód to wykorzystać konstrukt nie jest stworzenie niedziałający link, ale ponieważ javascript URL z jakiegoś powodu nie przechodzą referencje do aktywnego elementu html poprawnie.

np. handler_function(this.id) działa jako onClick, ale nie jako adres URL javascript.

Jest to zatem wybór między pisaniem pedantycznie zgodnych z normami kodów, który wymaga ręcznego dostosowania wywołania dla każdego hiperłącza lub nieznacznego niestandardowego kodu, który można zapisać raz i używać wszędzie.

0

Najlepszym sposobem, aby zawsze czynią link właściwie jest z css następująco:

a {cursor: pointer !important} 

Trzeba unikać podążać un-niezbędne rzeczy, jak wspomniano w wątku.

Powiązane problemy