Является ли привязанный тег без атрибута href безопасным?

Можно ли использовать тег привязки без атрибута href и вместо этого использовать обработчик события JavaScript JavaScript? Поэтому я полностью опустил бы href, даже не пустел (href="").

Ответ 1

В HTML5 используется элемент a без атрибута href. Он считается "гиперссылкой-заполнителем".

Пример:

<a>previous</a>

Посмотрите на ссылку "placeholder hyperlink" на странице ссылки привязки привязки w3c: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element.

И здесь также упоминается wiki: https://www.w3.org/wiki/Elements/a

Ссылка на местозаполнитель предназначена для случаев, когда вы хотите использовать элемент привязки, но не должны перемещаться в любом месте. Это пригодится для разметки текущей страницы в меню навигации или тропе. (Старый подход состоял бы в том, чтобы либо использовать тег span, либо тег привязки с классом с именем "active" или "current", чтобы его стиль и JavaScript, чтобы отменить навигацию.)

Ссылка на местозаполнитель также полезна в тех случаях, когда вы хотите динамически назначить место назначения ссылки через JavaScript во время выполнения. Вы просто устанавливаете значение атрибута href, а тэг привязки становится интерактивным.

См. также:

Ответ 2

Это нормально, но в то же время может привести к замедлению работы некоторых браузеров.

http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/

Мой совет - использовать < a href= "#" > </a>

Если вы используете JQuery, не забудьте также использовать:

.click(function(event){
    event.preventDefault();
    // Click code here...
});

Ответ 3

Короткий ответ: Нет.

Длинный ответ:

Во-первых, без атрибута href это не будет ссылка. Если это не ссылка, то это не будет доступной клавиатура (или переключатель передышки, или другое другое устройство, не основанное на указателях) (если вы не используете функции HTML 5 tabindex, которые не поддерживаются повсеместно). Очень редко для управления не требуется доступ к клавиатуре.

Во-вторых. У вас должна быть альтернатива, когда JavaScript не запускается (из-за медленной загрузки с сервера было отключено подключение к Интернету (например, мобильный сигнал на движущемся поезде), JS отключен и т.д. И т.д.).

Используйте прогрессивное улучшение ненавязчивое JS.

Ответ 4

Если вам нужно использовать href для обратной совместимости, вы также можете использовать

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

вместо #, если вы не хотите использовать атрибут

Ответ 5

Тег отлично подходит для использования без атрибута href. Вопреки многим ответам здесь, на самом деле есть стандартные причины для создания якоря, когда нет href. Семантически "a" означает якорь или ссылку. Если вы используете его для чего-либо, что соответствует этому значению, то вы в порядке.

Одно стандартное использование тега без href - это создание именованных ссылок. Это позволяет использовать привязку с именем = blah, а позже вы можете создать привязку с href= # blah для ссылки на именованный раздел текущей страницы. Однако это устарело, потому что вы также можете использовать идентификаторы таким же образом. Например, вы можете использовать тег заголовка с заголовком id =, а позже вы могли бы привязать якорь к заголовку href= #.

Однако моя точка зрения заключается не в том, чтобы предложить использовать свойство name. Только для того, чтобы обеспечить один вариант использования, когда вам не нужен href, и поэтому рассуждать, почему он не требуется.

Ответ 6

С точки зрения доступности <a> без href не является вкладкой, все ссылки должны быть табулированы, поэтому добавьте tabindex = '0 ", если у вас нет href.

Ответ 7

Тег <a> без "href" может быть полезен при использовании многоуровневых меню, и вам нужно расширить следующий уровень, но не хотите, чтобы эта метка меню была активной ссылкой. У меня никогда не было проблем с этим.

Ответ 8

В некоторых браузерах вы столкнетесь с проблемами, если не дадите атрибут href. Я предлагаю вам написать свой код примерно так:

<a href="#" onclick="yourcode();return false;">Link</a>

вы можете заменить yourcode() своей собственной функцией или логикой, но не забудьте добавить return false; выражение в конце.

Ответ 9

Я смог выполнить эту работу:

<a id="dumb-button" href="#" onclick="return false;">Link</a>

и он игнорирует щелчок. Затем я использую jQuery, чтобы поймать щелчок "гантели" и вызвать код (скрыть некоторые div/показать div).