[英]JavaScript redirect based on presence of cookie
我正在尝试建立一个系统,当用户登陆特定页面时,会创建一个cookie。
例如:如果用户转到.com / jp / a3,则会创建一个cookie。
我正在使用此代码来创建cookie,它似乎是在该页面上创建cookie。
<script>
document.cookie = "name_of_cookie=a3; expires=31 Dec 2017 12:00:00 UTC; path=/"
</script>
我目前创建了.com / jp / a1到.com / jp / a3页面。 因此有可能创建三个cookie。
用户下次访问后,我希望浏览器检查这些Cookie,并在用户访问正常着陆页时重定向回该页面。 如果用户访问过多个页面,我希望将优先级设置为他们首先访问的页面。 (这可能涉及将一些if else语句编码到我的javascript中以设置我假设的cookie?)如果这很困难,我可以通过a1-a3列表作为具有最高优先级的a1和a3最低的a1。
我已经尝试将以下代码添加到我的website.com/index.html文件中,但我没有运气。
<script>
function getCookie(cname) {
var name = name_of_cookie + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var redirect = getCookie("name_of_cookie");
if (redirect != "") {
window.location = "http://www.website.com/jp/" + redirect;
} else {
window.location = "http://www.website.com/"
}
}
checkCookie();
</script>
我认为我可能面临的一个问题是,当我在a3.com页面上时,我能够在我的存储中看到cookie,但是,当我进入我的index.html页面时,我无法看到我的存储空间中的cookie。 我已将路径设置为/,这只会使.com / jp /子文件夹中的cookie可用,还是应该可以在.com / index.html页面上访问?
提前感谢您提供任何帮助。
您似乎将getCookie函数定义为错误。 测试时,我得到错误name_of_cookie is not defined
。 似乎在你的getCookie()
函数的第一行,你使用name_of_cookie
而不是cname
来定义参数getCookie(cname)
您所要做的就是将其更改为
var name = cname + "=";
此外,通过将路径指定为/
您也应该能够从索引中查看cookie。
简单的错误!
我在第二行忘记了name_of_cookie周围的引文。
更正的答案是:
<script>
function getCookie(cname) {
var name = "name_of_cookie" + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var redirect = getCookie("name_of_cookie");
if (redirect != "") {
window.location = "http://www.website.com/jp/" + redirect;
} else {
window.location = "http://www.website.com/"
}
}
checkCookie();
</script>
感谢大家的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.