Для чего используется # (##) в url?

301
26 января 2017, 00:38

Никак не могу понять для чего используются # или ## в MVC проекте. Нажимаю кнопку и получаю url вида http://localhost:55555/example/exm/List##

Answer 1

Ссылка вида http://localhost:55555/example/exm/List## состоит из двух частей:

  1. Адрес, куда надо выполнить переход. Если совпадает с текущей страницей, никакого перехода не выполняется.

    В данном случае это http://localhost:55555/example/exm/List.

  2. Якорь, меченое место на странице, куда производится отмотка после перехода.

    Якорем является всё после первого символа решётки; в данном случае это второй символ #. Значит, должна произойти отмотка до <a name="#"></a>, либо <div id="#">...</div>.

Если при нажатии на ссылку происходит появление всплывающего окна с формой, значит нажатие на данную ссылку перехватывается JavaScript-обработчиком события onclick. Тогда адрес ссылки не имеет никакого значения; он срабатывает только при выключенном JavaScript и, должно быть, ведёт на запасную форму на отдельной странице.

Answer 2

Обычно при разработке в ссылках делают заглушки (в href выставляют значение #)

Answer 3

Если интересно, то вот в кратком изложении общая схема URI (Universal Resource Identifier) (URL (Uniform Resource Locators)).

/* 
   https://ru.wikipedia.org/wiki/URI 
   RFC 3986
   URI = [ схема ":" ] иерархическая-часть [ "?" запрос ] [ "#" фрагмент ]
   ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
    12            3  4          5       6  7        8 9
  // ? Ноль или одно    
  // * Ноль или более
  // + Одно или более
    группа 2 — схема,
    группа 4 — источник,
    группа 5 — путь,
    группа 7 — запрос,
    группа 9 — фрагмент.
    URL:
    <схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>
    https://en.wikipedia.org/wiki/Uniform_Resource_Identifier -
    - A generic URI is of the form:
    [scheme:][//[user:password@]host[:port]][/]path[?query][#fragment]
    The following figure displays two example URIs and their component parts.
                    hierarchical part
        ┌───────────────────┴─────────────────────┐
                    authority               path
        ┌───────────────┴───────────────┐┌───┴────┐
  abc://username:password@example.com:123/path/data?key=value#fragid1
  └┬┘   └───────┬───────┘ └────┬────┘ └┬┘           └───┬───┘ └──┬──┘
scheme  user information     host     port            query   fragment
  urn:example:mammal:monotreme:echidna
  └┬┘ └──────────────┬───────────────┘
scheme              path    
*/

Как следует из нее, интересующий вас # это содержимое части URI, называемой фрагмент (или якорь в терминологии URL).

На практике URL и URI часто взаимозаменяемые термины. Хотя, разница между ними есть (цитата отсюда)

Термин "унифицированный указатель информационных ресурсов" (URL) относится к подмножеству URI, которые, помимо идентификации ресурса, указывают способ его нахождения путем описания основных механизмов доступа к нему (т.е. его "положение" в сети).

Как именно интерпретируется фрагмент, зависит от исполнителя URI/URL. В принципе его можно рассматривать как еще один не структурированный аргумент (остальные аргументы передаются в части URI, называемой запрос)

READ ALSO
Работа с SELECT и LIKE MySQL

Работа с SELECT и LIKE MySQL

Есть запрос к базе MySQL

374
Не подключается сертификат к telegram

Не подключается сертификат к telegram

Пытаюсь подключить сертификат к телеграм

657
Рекурсия в функции PHP

Рекурсия в функции PHP

Есть такой код:

343
Не правильно работает функция preg_match()

Не правильно работает функция preg_match()

Здравствуйте, задание: Написать функцию, которая выводит список файлов в заданной директории, которые содержат искомое словоДиректория...

430