2009-07-27 15 views
6

Mam kotwicę, która nie jest nigdzie dostępna, ale ma kliknięcie (na przykład <a onclick="..."></a>). Moje pytanie dotyczy atrybutu href. Co powinienem umieścić na wartości?Kotwica z pustym łącznikiem

Jeśli po prostu pomijam href, kotwica nie ma odpowiedniej dekoracji - ikona wskaźnika myszy nie zmienia się po umieszczeniu na niej myszy.

Jeśli użyję href="#", okno przewinie się na górę strony po kliknięciu łącza.

Jeśli użyję href="javascript:..." i wstawię wartość onclick, postępując zgodnie z javascript:, strona zostanie pozostawiona, a pasek adresu będzie zawierał kod JavaScript po kliknięciu łącza.

Kiedy mówię o zachowaniu przeglądarki, mam na myśli Chrome, którego testuję na początku.

Co powinienem wstawiać dla href, gdy kotwica nie jest rzeczywistym łączem, ale istnieje tylko po to, aby wykonać zachowanie?

Odpowiedz

11

W swojej obsługi onclick, dodać to do końca:

return false; 

To spowoduje anulowanie domyślnego przetwarzania (tj następujący link) i można umieścić cokolwiek chcesz w href (the # jest tak dobre jak każdy).

12

Idealnie to masz opcję dla tych z włączoną obsługę Javascript:

<a href="degrade_option.html" onclick="return fancy_option();">do the option!</a> 

Jeśli nie jesteś do tego rodzaju rzeczy, chociaż tak naprawdę powinno być, najczęstszym sposobem jest użycie funt ale potem odwołać imprezę, aby zapobiec domyślną akcję dzieje, tak jak poniżej:

<a href="#" onclick="return do_something();">do something</a> 

ale wtedy musisz upewnić do_something powraca false. (lub możesz po prostu dodać return false; na końcu obsługi kliknięcia, ale robi się jeszcze bardziej brzydki). To zła praktyka, koszmar do utrzymania, a tam jest dużo lepszych alternatyw.

EDIT: W odpowiedzi na Twój komentarz, alternatywą jest unobtrusive javascript:

"Dyskretny JavaScript" to nowa technika w języku programowania JavaScript, stosowany na World Wide Web. Choć termin nie jest formalnie zdefiniowany, jego podstawowe zasady są ogólnie rozumiane jako obejmujące:

  • oddzieleniem funkcjonalności (dalej „warstwy zachowanie”) od struktury/content stronie WWW oraz prezentacji
  • najlepszych praktyk w celu uniknięcia problemy z tradycyjnego programowania JavaScript (takie jak przeglądarki niespójności i brak skalowalności)
  • progresywne ulepszanie wspieranie agentów użytkownika, które mogą nie obsługiwać zaawansowane funkcje JavaScript

Przeczytaj stronę dla niektórych przykładów.

+0

Jakie są alternatywy? – core

4
<a href="javascript:void(0);" onclick="...">txt</a> 
+0

Ktoś musi wyjaśnić swoje pochłonie ... – bcoughlan

+0

Miałem '" # "' ale dołącza do adresu URL, więc użytkownik nie może odświeżyć (F5), więc podoba mi się twoja odpowiedź. –

1

Wolę upuścić href (nie jest to wymagane zgodnie ze specyfikacją W3C), jeśli nie jest używany. Aby uzyskać oczekiwany kursor myszy, użyj CSS!

<style type="text/css"> 
a { cursor: pointer; } 
</style> 
<a onclick="go();">link</a> 
+0

Nie wiedziałem, że "href" nie był obowiązkowy; dzięki za wskazanie (nawet poszedłem i sprawdziłem specyfikację! :-)) – gerrod

0
<a href="javascript:;">Foo</a> 

krótki, opisowy, a nie skakać jak #.

+0

Czy wymagany jest średnik? – Aneon

0

Istnieją dwa sposoby na zrobienie tego, czy tag id odnośnik jest link, można użyć href="#" w HTML, a następnie w JavaScripcie mają:

$('#link').click(function(evt) { 
// code goes here 
evt.preventDefault(); 
}); 

Zapobiega to normalne zachowanie w przeglądarce . Lub

$('#link').click(function(evt) { 
// code goes here 
return false; 
}); 
Powiązane problemy