Сейчас общеизвестно, что не следует использовать псевдо-протокол javascript:, т.е писать:
<a href="javascript:openComment(123);"> открыть комментарий </a>
Почему это плохо, и какие аналоги следует использовать?
Псевдо-протокол javascript: давно устарел. Он поддерживается браузерами, но не описывается в веб-стандартах.
Впрочем, с другой стороны, на использовании javascript: построен ряд интересных технологий, например букмарклеты.
Ссылка через <a href="javascript:..."> не будет работать у пользователей без javascript.
Если это возможно, лучше сделать такой вариант:
<a href="http://javascript.ru/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="http://javascript.ru/nojs.html" target="_blank" onclick="ajax();return false"> запусти меня </a>
Страница /nojs.html может, например, содержать просьбу включить javascript.
Свойством onclick гораздо удобнее управлять из javascript. Оно задает обработчик события. Можно делать несколько обработчиков, назначить функцию а не строку как в href, и т.п.
А псевдо-протокол javascript: - не событие. Он выпадает из общей схемы и потому неудобен.
P.S Строго говоря, и onclick внутри HTML не следует указывать. Отдельно должны идти разметка и javascript-код. Но иногда onclick - это удобно, так почему же нет..
Очень часто используют скрипт в ссылке, когда по клику нужно открыть картинку или описание продукта.
Так вот многие открывают эту ссылку в новой вкладке браузера и получают в адресе страницы "javascript:showPopup(27);", а не то, что они хотели увидеть.
Если все же хочется, чтобы по клику на ссылку у посетителя с отключенным javascript ничего не произошло:
<a href="javascript:void(0)">...</a>
Может ли это быть полезно в реальной жизни?
Сам не использую, но другого способа сделать ссылку нерабочей для посетителей без JS не знаю.