Редирект по 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:44. |