Если вы поощряете использование # и предотвращаете поведение по умолчанию (прокрутите до верхней части документа), это неизбежно приводит к тому, что некоторые используют return false
значение функции в событии onclick, т.е.
Hey
Hey
document.getElementById("link").addEventListener("click",function(){
return false;
},false);
И если вы вместо этого используете javascript: void, вам не нужно возвращать false для события click, как было сказано ранее, void (0) — это наименьший возможный сценарий, который оценивается как неопределенный, т.е.
Hey
Тот же эффект, что и при использовании href="#"
меньше и понятнее.
JavaScript: недействительным (0)
Когда используешь javascript:
в навигации возвращаемое значение выполненного скрипта, если оно есть, становится содержимым нового документа, который отображается в браузере. void
Оператор в JavaScript заставляет возвращаемое значение выражения, следующего за ним, возвращать undefined, что предотвращает выполнение этого действия.
Причина, по которой вы хотите сделать это с помощью ссылки, состоит в том, что обычно URL-адрес javascript: перенаправляет браузер на текстовую версию результата оценки этого JavaScript. Но если результат не определен, браузер остается на той же странице. void (0) — это наименьший возможный скрипт, который оценивается как неопределенный.
Тем не мение, javascript:void(0);
нарушает Политика безопасности контента на CSP с поддержкой HTTPS. Политика безопасности контента (CSP) — это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая Межсайтовый скриптинг (XSS) и атаки с использованием данных. Эти атаки используются для всего: от кражи данных до порчи сайта или распространения вредоносных программ.
Поэтому, если вы являетесь стандартным религиозным разработчиком, вы можете использовать href = «#» вместо javascript: void, чтобы предотвратить нарушение любого закона.
HREF = «#»
Хеш является самым безопасным на тот случай, если у вашего пользователя отключен Javascript.
Вы можете легко решить эту проблему, используя jQuery для всех ссылок с этим значением в вашем документе:
$('a[href="#"]').click(function(e) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
});
Обратите внимание, что вы также можете даже возвращать false непосредственно в атрибуте onclick элемента, который будет иметь тот же эффект:
Hey, i'll do nothing
Вывод и рекомендации
Использовать javascript:void(0)
если хочешь быть сырым, точным и быстрым.
использование href="#"
и предотвратить событие по умолчанию с помощью JavaScript, чтобы быть последователем стандартов.
- Если ваша ссылка никуда не идет, не используйте
элемент. Использовать
или что-то еще подходящее и добавьте CSS (: hover), чтобы стилизовать его, как вы хотите.
- Презентация не должна смешиваться с контентом. Это означает, что нет javascript: action и нет атрибутов onclick, вместо этого предотвратите событие по умолчанию, используя обычный Javascript.