# в URL

внешний интерфейс JavaScript браузер Google

1. Содержит#Для чего нужен URL?

Включать#URL-адрес символа является URL-адресом фрагмента.#Указывает местоположение на веб-странице.

Браузер запросит страницуnameсоответствие значения свойстваprintиз<a>Этикетка. который:<a name="print"></a>,
илиidсовпадение атрибутовprintиз<a>Этикетка. который<a id="print"></a>
После совпадения браузер прокручивает раздел в верхнюю часть видимой области.

2. Http запрос не включает#

#Работает только в браузере, на сервер не влияет. Таким образом, http-запрос не будет включать#.
Посетите URL-адрес ниже

http://www.example.com/index.html#print

Фактический запрос, сделанный браузером

    GET /index.html HTTP/1.1
    Host: www.example.com

3. #Все следующие символы используются браузерами в качестве позиционных идентификаторов.

При отправке формы, если символ отправки имеет#символ, следующие параметры будут усечены.

4. Модификация#Не вызывает перезагрузку страницы, но изменяет историю браузера

location.href += '#caper';  //页面不会刷新

Браузер прокручивается до новой позиции, но не перезагружает всю страницу.

Однако это изменяет запись браузера, мы можем передать браузер上一页кнопку, чтобы вернуться в исходное положение.
Эта функция очень полезна для одностраничных приложений.

5. Доступ к javascript можно получить черезwindow.location.hashпрочитать или изменить#

6. Веб-паук Google по умолчанию игнорирует содержимое после #.

Веб-паук Google отвечает за сканирование содержимого веб-страниц, а также ссылок на веб-страницах, которые станут частью поискового индекса Google. Веб-паук сканирует и анализирует HTML, но, поскольку он не является программой браузера и не имеет движка javascript, javascript, используемый для загрузки и отображения контента на странице, не выполняется. Поэтому символы после # будут игнорироваться веб-пауками и захватывать только содержимое до #, например:

http://www.cnblogs.com/#casper
http://www.cnblogs.com/#chyingp

Это невыгодно как для разработчиков, так и для поисковых систем: контент (приложения), над созданием которых упорно трудились первые, имеет меньше возможностей для доступа, а вторые теряют возможность дальнейшего обогащения индекса контента, особенно когда ajax-приложений становится все больше и больше. сегодня все больше и больше.

Хеш-взрыв решения

Просто измените # на #!, реализация примерно следующая: когда веб-паук встречает #!, он автоматически#!identifierПревратиться в_escaped_fragment_=identifierпараметры формы. но:

  • Буду#изменить на!#Скажите веб-пауку: мы поддерживаем это решение:hash bang
  • Соответственно, наше приложение также должно иметь соответствующие возможности поддержки.escaped_fragment=casperЗапрос GET должен предоставлять соответствующий веб-контент.

7. событие onhashchange

Это новое событие HTML 5, которое запускается при изменении значения #. IE8+, Firefox 3.6+, Chrome 5+, Safari 4.0+ поддерживают это событие.

Есть три способа его использования:

window.onhashchange = func;

<body onhashchange="func();">

window.addEventListener("hashchange", func, false);

Справочная документация

  1. 6 Things You Should Know About Fragment URLs
  2. Хэштег URL