Редирект по cookies при загрузке страницы
Есть главная страница и подразделы (например, /1 и /2). В этих страницах есть одинаковое меню.
Пользователь кликнул на ссылку 1 - записывается соответствующее cookie. Так же и с ссылкой 2. Пытаюсь при загрузке главной страницы проверять cookie и перенаправлять пользователя на соответствующую страницу. Очень плохо разбираюсь в JS, поэтому нагородил из найденных в сети кусочков кое-что и не могу понять, как мне передать список адресов через <body onload="UrlByCookie('reg2go', 'http://test.test/1/')"> Помогите заставить это работать или укажите на подходящий пример. Ругайте, бейте тапками, но помогайте. Заранее благодарю. :help: Вот мой пример главной страницы: <html> <head> <script> function setCookie(cname, cvalue, exdays, path) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + "; " + expires + "; " + "path=/"; } function GetCookie(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 4) return parts.pop().split(";").shift(); } function UrlByCookie(cookie_name, url_to_go) { GetCookie("reg2go") == cookie_name && (window.location.href = url_to_go); } } </script> </head> <body onload="UrlByCookie('reg2go', 'http://test.test/1/')"> <a href="http://test.test/1/" onclick="setCookie('reg2go', 'http://test.test/1/', '100', '/')">1</a> <hr/> <a href="http://test.test/2/" onclick="setCookie('reg2go', 'http://test.test/2/', '100', '/')">2</a> <hr/> <a href="http://test.test/3/" onclick="setCookie('reg2go', 'http://test.test/3/', '100', '/')">3</a> <hr/> </body> </html> |
Вам следует записать в хранилище при нажатии на ссылку адрес, куда она ведёт. Затем при повторном посещении главной страницы проверить, есть ли адрес в хранилище, и если есть, то перейти...
<html> <head> <script> if("reg2go" in localStorage) { location.href = localStorage.reg2go; } addEventListener("click", event => { const link = event.target.closest("a"); if(link != null) { localStorage.reg2go = link; } }); </script> </head> <body> <a href="http://test.test/1/">1</a> <hr/> <a href="http://test.test/2/">2</a> <hr/> <a href="http://test.test/3/">3</a> <hr/> </body> </html> Цитата:
Цитата:
Цитата:
|
Цитата:
Ваш пример записывает в локальное хранилище адрес любой кликнутой на странице ссылки, если я правильно понимаю. Если мне понадобится записывать адреса не всех кликнутых ссылок, а только конкретных - мне просто нужно onclick вызывать функцию, которая будет записывать в локальное хранилище, верно? И еще - как поступить с внутренними страницами, с которых не требуется делать редирект, но нужно записывать адреса некоторых ссылок? Нужно просто oncklick перезапиывать наш ключ reg2go, чтобы при последующем заходе на главную, там выполнить редирект, верно? |
Цитата:
Цитата:
Вот пример, если у ссылки есть класс reg2go, то при нажатии на неё в хранилище записывается её адрес. Также указано, что переход на другую страницу производится только с главной страницы. <html> <head> <script> if(location.pathname == "/" && "reg2go" in localStorage) { location.href = localStorage.reg2go; } addEventListener("click", event => { const link = event.target.closest("a.reg2go"); if(link != null) { event.preventDefault(); localStorage.reg2go = link; } }); </script> </head> <body> <a class="reg2go" href="http://test.test/1/">1</a> <hr/> <a class="reg2go" href="http://test.test/2/">2</a> <hr/> <a href="http://test.test/3/">3</a> <hr/> </body> </html> |
Цитата:
А если пользователь перешел с внутренней страницы на главную и мы по клику записали в хранилище адрес главной, при новом заходе на главную произойдет переход на текущий адрес? Как этого избежать? |
Добавил кое-что:
var nogo = localStorage.getItem('reg2go'); if (nogo != null && nogo != "http://test.test/" && location.pathname == "/" && "reg2go" in localStorage) { location.href = localStorage.reg2go; } addEventListener("click", event => { const link = event.target.closest("a.reg2go"); if(link != null) { event.preventDefault(); localStorage.reg2go = link; location.href = localStorage.reg2go; } }); Наверное, не очень элегантно? Однако работает. Спасибо, Malleys! |
Часовой пояс GMT +3, время: 13:33. |