5

Здесь сделали, при нажатий на элементы меню в адресную строку добавляется хэш и аяксом загружаеть контент. Не скажете, какой должен быть алгоритм чтобы так же сделать?

2
  • 1
    присоединяюсь к вопросу + подвопрос: как с этим делом дружат поисковики? 30 мар 2012 в 10:07
  • присоединясь к вопросу о дружеских отношениях
    – Spectre
    30 мар 2012 в 17:33

1 ответ 1

8

Оооо, это очень острый вопрос в веб-разработке и SEO. Гугл даже целый микропротокол придумал для таких дел - там используется hashbang (#!), а не просто #. Но - поддерживается (пока?) только Гуглом. Иначе говоря, ваш контент, доступный только по hashbang-urlам индексирован не будет никем, кроме Гугла (при условии, что вы поддерживаете его протокол). То есть с поисковиками - все чертовски плохо.

НО! Если у вас документы через ajax подгружаются как непосредственно html-документы (а не как набор переменных в JSON, например, который потом будет использован в шаблоне на стороне клиента), возможно в исходном документе разместить именно эти ссылки (они будут видны поисковикам, ибо те не понимают JS), а при загрузке через JS сменить их на подлежащие загрузке через ajax. Возможно, это и будет работать, но тут другой подводный камень - гуглбот JS в некоторой мере понимает и не известно, как он отнесется к этому безобразию.

W3C против формата, предложенного Гуглом, ибо "ломает основную идею веб": каждому уникальному документу - уникальная ссылка. При подгрузке частей документа через ajax, во всяком случае. Если части документа будут в теле документа, не думаю, что это нанесет урон вебу. А вот при использовании ajax структура пострадает, ибо согласно спецификациям fragment (хэш) не является частью URI, и ссылки вида example.com/#!one_stuff и example.com/#!another_stuff - формально указывают на один и тот же ресурс.

А алгоритм простой. Отлавливаем событие onhashchange и ставим ему обработчик, который парсит хэш и на основе этих данных производит какие-то действия.

Для jQuery, например, даже несколько плагинов есть. Самый знаменитый - BBQ. Есть jquery-history, пользовался им однажды.

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.