Dzień 13: Używanie prawdziwych linków
Zmorą Sieci są odnośniki "javascript:
" - pseudo-linki, które wykonują kawałek kodu Javascript kiedy na nie klikniesz. To jest częsty przypadek na stronach, gdzie takie linki otwierają osobne małe okienko np. do dodawania komentarzy. Dlaczego jest to problemem? Ponieważ 9% użytkowników Internetu nie używa Javascriptu z takich czy innych powodów, w tym również dlatego, że ich przeglądarki po prostu tego nie obsługują. Zatem dla nich takie pseudo-linki nie działają; używaj prawdziwych odnośników.
Mimo, że problem jest prosty do opisania i łatwy do poprawienia, to z pewnością nie można go bagatelizować. Niektóre omawiane tutaj problemy, jak brak linku przeskakującego menu strony, zmniejszają łatwość obsługi Twojej strony do pewnego stopnia, ale tak naprawdę nadal może być w jakiś sposób odczytana. Natomiast pseudo-linki z "javascript:
" powodują, że pewne fragmenty strony są kompletnie niedostępne. Na przykład jeśli masz komentarze ukryte za takim linkiem, to równie dobrze mogłoby ich w ogóle nie być.
Kto na tym skorzysta?
- Marek skorzysta. Lynx nie obsługuje Javascriptu.
- Michał skorzysta. Links nie obsługuje Javascriptu.
- Julia skorzysta. Mimo, że używa Internet Explorera, to zgodnie z polityką departamentu informatyki w jej firmie obsługa Javascript jest wyłączona na wszystkich stronach, które nie znajdują się na ich liście zaufanych. Twojej strony na tej liście nie ma.
- Google skorzysta. Google stara się podążać za odnośnikami aby znaleźć i zaindeksować więcej stron, jednak nie może wejść na stronę za linkiem "
javascript:
", ponieważ nie wykonuje skryptów podczas indeksowania stron Sieci.
Jak to zrobić?
Większość nowych szablonów w narzędziach do blogowania nie używa pseudo-linków, więc możliwe, że nie musisz nic zmieniać. Sprawdź czy masz w kodzie strony linki z javascript:
. Jeżeli nie to wszystko w porządku.
Jednak starsze szablony Movable Type zawierały taki link:
<a href="javascript:OpenComments(<$MTEntryID$>)">Comments (<$MTEntryCommentCount$>)</a>
Jeśli masz taki kod zamień go na następujący:
<a href="<$MTCGIPath$>mt-comments.cgi?entry_id=<$MTEntryID$>" onclick="OpenComments(<$MTEntryID$>); return false">Comments (<$MTEntryCommentCount$>)</a>
W przeglądarkach obsługujących Javascript działanie takiego linku będzie identyczne, ponieważ kod z atrybutu onclick
wykona się najpierw, zanim zostanie uwzględniony atrybut href
. Więc w tej wersji nadal będzie wywoływana funkcja OpenComments
, która otwiera okienko z komentarzami. Jednak przeglądarka nie obsługująca Javascriptu (oraz Google) zignoruje atrybut onclick
i przejdzie do strony wskazanej przez atrybut href
, która pokazuje komentarze w tym samym oknie.
Jeżeli używasz pseudo-linków javascript:
z jakiegokolwiek innego powodu, przestań. Po prostu przestań. Zastosuj powyższą technikę, tak aby przeglądarki nie obsługujące Javascriptu zawsze miały szansę podążyć za prawdziwym linkiem (czyli opisanym przez href
).
Zobacz także
- Jeff Howden: Links & JavaScript Living Together in Harmony. Artykuł wyjaśniający technikę wykorzystaną powyżej, czyli o tym jak stworzyć link obsługujący Javascript i równocześnie nieszkodliwy dla przeglądarek bez Javascriptu. (Strona w języku angielskim)
Postscriptum
Nawet mnie nie prowokuj, żebym zaczął o tych dynamicznych menu w Javascript. Są cool mniej więcej tak samo jak palenie papierosów. Nie rób takich menu, używaj prawdziwych linków.