Страницы

Поиск по вопросам

понедельник, 12 ноября 2018 г.

Хэш в урл-е

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


Ответ

Оооо, это очень острый вопрос в веб-разработке и 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, пользовался им однажды.

Комментариев нет:

Отправить комментарий