Почему используется # соглашение, используемое в пустой привязке hrefs?

Я понимаю, что это хорошая идея не оставлять пустые теги привязки. В jQuery и других синтаксисах я заметил, что каждый обычно использует # для заполнения пробела (<a href='#'>anchor text</a>). Является ли этот персонаж лучше или хуже, чем заполнять его чем-либо еще? (например, <a href='$'>anchor text</a>). У меня нет причин хотеть это делать, но, по-видимому, нет причин в стороне от конвенции, чтобы сделать это другим путем. Почему соглашение # используется в пустой анкете hrefs?

Ответы

Ответ 1

Это связано с тем, что символ # в URL-адресе ссылается на локальную страницу.

Он используется для имен якорей (или любого ID) внутри страницы, поэтому ссылка может перейти непосредственно в эту область.

Wikipedia называет его fragment identifier и имеет это, чтобы сказать:

Идентификатор фрагмента, если он присутствует, указывает часть или позицию в общем ресурсе или документе. При использовании с HTTP он обычно указывает раздел или местоположение на странице, и браузер может прокручивать, чтобы отобразить эту часть страницы.


В качестве практического примера - эта ссылка на wikipedia имеет идентификатор фрагмента (всегда в конце URL-адреса):

http://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax

На этой странице есть тег <span id="Syntax" ..., и браузер переходит непосредственно к нему.

Ответ 2

Таким образом, если пользователь отключил javascript, на самом деле после ссылки на "http://mysite.com/#" не будет никаких негативных последствий.

Например, эти ссылки все еще работают, поскольку # указывает местоположение на текущей странице:

в то время как это не так:

Ответ 3

Ссылка, обозначенная символом <a href=, указывает на другое место. Это где-то может быть на другой стороне мира (абсолютный URL) или локально на том же домене/пути (относительный URL). Просто оставить его пустым - это сам документ.

Символ # - это символ, используемый для ветки якоря от остальной части URL-адреса. Браузеры даже не отправляют его на сервер, а используют его для вертикальной прокрутки до позиции на странице, помеченной этим якорем (используя <a name="foo"></a>).

В принципе, <a href="#"> указывает браузеру оставаться на одной странице. Он обычно используется вместе с JavaScript - подключением к событиям onClick, поэтому JavaScript делает что-то полезное, а затем return false, чтобы браузер не перешел по ссылке. Но если бы он (например, если JavaScript отключен или return false опущен), он не покидает текущий сайт, обычно даже не перезагружая его.

Итак, # используется не как случайный char, а потому, что на самом деле char, указанный для обозначения якоря в ссылке, просто случается, что в вашем случае вам не нужна фактическая ссылка (на другую страницу), а не на якорь, а только на элемент, который можно щелкнуть.

Ответ 4

в основном это старый школьный способ предотвращения действия щелчка, чтобы вызвать перезагрузку страницы.

Если вы не используете атрибут href, просто оставьте его пустым или даже лучше, если вы можете настроить целевой резервный URL для людей с отключенным JS