我正在尝试更新 cookie,其中包含我网站的用户完成操作的总次数。当他们重新加载应用程序时,我不希望整个事情都重置,所以我试图创建一个系统,其中他们完成操作的总次数存储为 cookie,并作为应用程序提供给应用程序如果他们重新加载页面,计数的默认值。这样他们就可以从中断的地方继续申请。我试图通过以下方式做到这一点:
让函数“
check cookie count
”为(默认为 1)分配一个新值,count
说明如果存在先前的 cookie userC,则将该值分配给 count。-if (userCNT != "") {count = userCNT;}
单击启动应用程序的按钮时调用该函数(位于
start
函数内)当应用程序运行一次时,该
update
函数运行,该函数运行其他几个函数,包括一个使用全局计数的当前值更新 cookie -setCookie("userC", count, 365);
我已经设法让网站保留 cookie(第一次使用 cookie)......但是,当我在 count cookie 保留后重新加载它时,它就停止工作了。这种崩溃只发生在checkcookieCount
函数运行时,然后从我可以看出它是什么时候说的那一行count = userCNT
。当我查看 chrome/firefox 开发人员任务管理器时,我发现该页面正在消耗大量内存。我不知道这里发生了什么,也没有看到任何错误消息指出方向。这是相关的(我认为)代码。我的猜测是我正在做一些在那里创建无限循环的事情,而我对 cookie 世界的无知导致我犯了一个错误。有什么想法吗?
function setCookie(cname, cvalue, exdays) {
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(cname) {
var name = cname + "=";
var ca = document.cookie.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 checkCookieCount() {
var userCNT = getCookie("userC");
if (userCNT != "") {
alert("Your Previous Count: " + userCNT);
// make global count update
count = userCNT; <-- THIS IS WHATS CAUSING THE PROBLEM
} else {
kount = count;
if (kount != "" && kount != null) {
setCookie("userC", kount, 365);
}
}
}
function start() {
username = document.getElementById("user_PID").value;
alert("your PID is " + username);
checkCookieName();
checkCookieCount();
var oneMin = 60 * 60,
display = document.querySelector('#time');
startTimer(oneMin, display);
jsoner();
while (count > 1);
modal.style.display = "none";
};
var count = 1;
这里存在各种其他功能,运行调查。根据页面的总 window.count 做几件事情。其他最相关的部分在底部:
function knxer() {
if (window.count === 1) {
return knx = "kn" + ((username*1) + 1);
console.log("KNX:" + knx);
} else {
return knx = ("kn" + ((username*1) + (count*1)));
console.log("KNX:" + knx);
}
};
window.survey = new Survey.Model(json);
survey.surveyPostId = "7b6c29dc-4771-49e1-8403-16591350d697";
survey
.onComplete
.add(function(result) {
var PID = username
var results = PID + ":\n" + JSON.stringify(result.data, null, 3);
window.count++;
survey.sendResult('3cc0bc85-2253-412d-a56c-cc7b82260de3');
update();
survey.clear();
survey.render();
});
$("#surveyElement").Survey({
model: survey
});
}
function update() {
setCookie("userC", count, 365);
jsoner();
document.getElementById("kounter2").innerHTML = "Images Tagged: " + (count - 1);
}
我已尝试在此处删除大部分不相关的代码,但如果您想查看整个站点的运行情况(正在重现错误),您可以在此处查看,或在此处查看完整的存储库
更新 2:经过进一步调查,主要问题似乎是与 cookie 相关的计数。值 0 和 1 有效,但超过此值的任何值都会导致页面崩溃。在这一点上,我已经尝试了几种不同的方法。我几乎可以肯定有一些关于 Javascript 的规则我误解了 - 我已经清楚地创建了一个循环(userC cookie
-> count
-> increment count
-> userC cookie
...但我不明白这可能是一个问题。