Можно ли использовать тег привязки, не включая href
атрибут, и вместо этого использовать обработчик событий щелчка JavaScript? Так что я бы опустил href
полностью, даже не пусто ( href=""
).
Можно ли использовать тег привязки, не включая href
атрибут, и вместо этого использовать обработчик событий щелчка JavaScript? Так что я бы опустил href
полностью, даже не пусто ( href=""
).
Ответы:
В HTML5 использование a
элемента без href
атрибута допустимо. Он считается «гиперссылкой-заполнителем».
Пример:
<a>previous</a>
Найдите «гиперссылку-заполнитель» на странице ссылок тега привязки w3c: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element .
И это также упоминается в вики здесь: https://www.w3.org/wiki/Elements/a
Ссылка-заполнитель предназначена для случаев, когда вы хотите использовать элемент привязки, но нигде не перемещать его. Это удобно для разметки текущей страницы в навигационном меню или в журнале. (Старый подход заключался в использовании тега span или тега привязки с классом с именем «active» или «current» для стилизации и JavaScript для отмены навигации.)
Ссылка-заполнитель также полезна в тех случаях, когда вы хотите динамически установить место назначения ссылки через JavaScript во время выполнения. Вы просто устанавливаете значение атрибута href, и тег привязки становится активным.
Смотрите также:
href
этого cursor: pointer
стиль не будет автоматически добавлен к элементу.
Это нормально, но в то же время может привести к замедлению работы некоторых браузеров.
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
Мой совет - используйте <a href="#"> </a>
Если вы используете JQuery, не забудьте также использовать:
.click(function(event){
event.preventDefault();
// Click code here...
});
Краткий ответ: Нет.
Длинный ответ:
Во-первых, без атрибута href это не будет ссылка. Если это не ссылка, то она не будет доступна с клавиатуры (или переключателя дыхания, или другого устройства ввода, не основанного на указателе) (если вы не используете функции HTML 5, tabindex
которые не поддерживаются повсеместно). Очень редко уместно, чтобы элемент управления не имел доступа к клавиатуре.
Во-вторых. У вас должна быть альтернатива для случаев, когда JavaScript не запускается (из-за медленной загрузки с сервера, из-за разрыва соединения с Интернетом (например, из-за мобильного сигнала в движущемся поезде), JS выключен и т. Д. И т. Д.).
Воспользоваться прогрессивного улучшения с помощью ненавязчивых JS.
href
было обязательным (если только это не был именованный якорь, в этом случае tabindex не имел смысла). Использование tabindex
для добавления не сфокусированных элементов в порядок вкладок является новым нововведением в HTML 5.
a
тег без href
атрибута.
Этот тег можно использовать без атрибута href. Вопреки многим из ответов здесь, на самом деле есть стандартные причины для создания якоря, когда нет href. Семантически, «а» означает якорь или ссылку. Если вы используете это для чего-то, что следует этому значению, тогда у вас все хорошо.
Одно из стандартных применений тега без href - создание именованных ссылок. Это позволяет вам использовать якорь с name = blah, а позже вы можете создать якорь с href = # blah для ссылки на именованный раздел текущей страницы. Тем не менее, это устарело, потому что вы также можете использовать идентификаторы таким же образом. В качестве примера вы можете использовать тег заголовка с id = header, а позже вы можете использовать привязку, указывающую на заголовок href = #.
Однако я не советую использовать свойство name. Только для обеспечения одного варианта использования, где вам не нужен href, и, следовательно, обоснование, почему это не требуется.
href
атрибута для <a>
элемента , который используется в качестве интерактивного элемента (то есть ссылки). Как вы упоминаете, без href
атрибута это довольно просто ... не ссылка, а просто якорь, что совсем другое.
С точки зрения доступности <a>
без href невозможно табулировать, все ссылки должны быть табулируемыми, поэтому добавьте tabindex = '0', если у вас нет href.
<a>
Тег без «HREF» может быть удобно при использовании меню многоуровневого и вам нужно расширить на следующий уровень , но не хотите , чтобы ярлык меню , чтобы быть активным звеном. У меня никогда не было проблем с этим.
В некоторых браузерах вы столкнетесь с проблемами, если не укажете атрибут href. Я предлагаю вам написать свой код примерно так:
<a href="#" onclick="yourcode();return false;">Link</a>
Вы можете заменить yourcode () своей собственной функцией или логикой, но не забудьте добавить return false; заявление в конце.
#
для индексной страницы. Для некоторых из моих ссылок на панели навигации я не хочу запускать маршрут, по #
которому происходит, если вы используете a href="#"
его самостоятельно. Использование <a href="#" onclick="return false;"
останавливает запуск маршрута, но событие click все еще всплывает в моем обработчике (который использует события DOM, подключенные через jQuery и Backbone.Radio). Спасибо @ shashwat13 :)