|
В какую сторону двигаться? Cookie (Javascript)
Вложений: 2
Уважаемые доны. Прошу направить меня в нужную степь и по возможности подсказать как действовать.
Идея такова: имеется шапка с двумя блоками (серый и синий). Когда пользователь заходит на сайт вкладка "Частным лицам" по умолчанию активна (на картинке_1 это видно) и пользователь может переходить по ссылкам в синей части, таким как: "Каталог", "Услуг и цены", "Межгород" и т.д. При этом вкладка "Частным лицам" остается активной. А когда Пользователь нажимает на ссылку "Юридическим лицам", то вкладка "Юридическим лицам" должна становится активной и пользователь может переходить по другим ссылкам меню в синей части (картинка_2), а вкладка "Юридическим лицам" должна оставаться активной. Все это должно реализовываться с помощью cookie. Собственно как должны меняться ссылки в синей части меню это соображу. А вот в остальном задачу не соображу как реализовать. |
Многое зависит от того, какими механизмами Вы пользуетесь
Если при каждом выборе в меню идет обращение к серверу, который генерит страницу, это одно. Пусть он ее и генерит всю, в зависимости от ссылки вместе с меню. А если вы загружаете сразу весь возможный контент (для всего меню), то при нажатии пункта меню должен становится видимым тот блок, который к нему относится, а остальные гаситься. |
voraa,
Процесс должен происходит по средствам cookie |
|
Цитата:
|
Цитата:
Зачем заставлять пользователя возвращаться на то место, с которого он ушел? Это не роман, который читают последовательно. Это сайт с разнообразной информацией. Человек что то посмотрел, что то ему показалось интересным, он посмотрел еще пару пунктов меню, не нашел ничего важного и ушел. И зачем следующий раз возвращать его туда же? Представьте, что так поступал бы какой-нибудь сайт типа mdn, или википедии?. Пусть человек положит интересующее его место в закладку. |
Цитата:
Цитата:
Суть вся в том что и во вкладах Физические лица и Юридические лица в меню второго уровня попадаются одинаковые ссылки, например, такие как: "Контакты". И еще весь этот блок хедара у меня подключен на все страницы через: <?php include_once "head.php"; ?> то есть, все ссылки, классы и тп. не поменять. |
Цитата:
|
Mytnyi,
let categoryLink, targetLink; // среди всех ссылок, которые находятся под вкладками ищется та, которая указывает на текущую страницу, // на такую найденную ссылку добавляется класс target (чтобы добавить эффект «обводка») Array.prototype.filter.call(document.querySelectorAll(".menu > li > a + ul a"), link => link.href === location.href).slice(0, 1).forEach(link => { if(targetLink) targetLink.classList.remove("target"); link.classList.add("target"); targetLink = link; }); // находим на самих вкладках такую ссылку, адрес которой совпадает с текущим адресом страницы (если есть) categoryLink = Array.prototype.find.call(document.querySelectorAll(".menu > li > a"), link => link.href === location.href); // а если нет, то определяет ссылку на вкладке, к какой категории относится текущая страница categoryLink = targetLink ? targetLink.closest(".menu > li").querySelector("a") : categoryLink ? categoryLink : document.querySelector(".menu > li > a"); // на такую найденную ссылку добавляется класс active (чтобы добавить эффект «выбранная вкладка») categoryLink.classList.add("active"); Здесь выполняются две задачи — обводится в кружочек ссылка, на которую перешли, и показывается та вкладка, где эта обведённая ссылка находится. Рабочий пример можно посмотреть тут — https://charm-launch.glitch.me/h/ (код можно смотреть через консоль разработчика в браузере (Ctrl+Shift+I или F12), или только исходный код страницы (Ctrl+U) Цитата:
|
Цитата:
При переходе с вкладки на вкладку и на каждый пункт на сервере меню полностью генерится новая страница? А как генерится нужный хедар? Он тоже зависит от куков? Но это не совсем правильно. Как уже писал Malleys, невозможно будет запомнить ссылку на страницу или отослать ее кому то, т.к. нужных куков не будет. Здесь нужно использовать адреса Например site.ru?tab=yur&men=doc site.ru?tab=phys&men=cat Это и на сервере разобрать можно (get запросы) и браузер разберет, если нужно (url.search) |
Часовой пояс GMT +3, время: 18:35. |
|