» » Чому [a href="javascript:..."] - погано

Чому [a href="javascript:..."] - погано

Чому [a href="javascript:..."] - поганоЗараз загальновідомо , що не слід використовувати псевдо- протокол javascript : , т.е писати :

<a href="javascript:openComment(123);">
  відкрити коментар
</ a >


Чому це погано , і які аналоги слід використовувати?

Причина 1 . ідеологічна причина

Псевдо- протокол javascript : давно застарів. Він підтримується браузерами , але не описується у веб- стандартах .
Втім , з іншого боку , на використанні javascript : побудований ряд цікавих технологій , наприклад букмарклет .

Причина 2 . відсутність деградації

Посилання через
<a href="javascript:...">
не працюватиме у користувачів без javascript .
Якщо це можливо , краще зробити такий варіант:

<a href="/openComment.php?id=123" onclick="openComment(123); return false">
  відкрити коментар
</ a >


Ті відвідувачі , у яких javascript відключений , пройдуть за посиланням на / openComment.php ? Id = 123 і таки побачать там щось корисне.

Пошуковики теж проїндексируют / openCommend.php ? Id = 123.

Якщо нічого подібного такий сторіночці зробити не можна , наприклад , посилання повинне запускати AJAX -запит , то не треба писати :

<! - Погано ->
<a href="#" onclick="ajax();return false">  
   запусти мене
</ a >


При натисканні на таку посилання з відключеним javascript , людини кине на початок сторінки. Чи не є гуд . Але якийсь href повинен бути . Тому краще зробити так :

<! - Добре - >
<a href="/nojs.html" target="_blank" onclick="ajax();return false">
  запусти мене
</ a >


Сторінка / nojs.html може , наприклад , містити прохання включити javascript .

Причина 3 . недоліки інтеграції

Властивістю onclick набагато зручніше управляти з javascript . Воно задає обробник події . Можна робити кілька обробників , призначити функцію а не рядок як у href , і т.п.

А псевдо- протокол javascript : - не подія. Він випадає з загальної схеми і тому незручний.

P.S. Строго кажучи, і onclick всередині HTML не слід вказувати. Окремо повинні йти розмітка і javascript -код . Але іноді onclick - це зручно , так чому ж ні ..

Причина 4 . негативне юзабіліті

Дуже часто використовують скрипт на засланні , коли по кліку потрібно відкрити картинку або опис продукту .

Так от багато хто відкриває це посилання у новій вкладці браузера і отримують в адресі сторінки " javascript : showPopup ( 27 ) ; " , а не те , що вони хотіли побачити.

Позитивне застосування ?

Якщо все ж хочеться , щоб по кліку на посилання у відвідувача з відключеним javascript нічого не сталося:

<a href="javascript:void(0)"> ... </ a >

Чи може це бути корисно в реальному житті?

Сам не використовую , але іншого способу зробити посилання непрацююче для відвідувачів без JS не знаю.


667 09.10.13



Напівжирний Нахилений текст Підкреслений текст Перекреслений текст | Вирівнювання по лівому краю По центру Вирівнювання по правому краю | Вставка смайликів Вибір кольору | Прихований текст Вставка цитати Перетворити вибраний текст з транслітерації в кирилицю Вставка спойлеру