问题描述
我正在尝试使用我网站用户完成操作的总次数来更新 cookie。当他们重新加载应用程序时,我不希望整个事情都重置,所以我试图创建一个系统,将他们完成操作的总次数存储为 cookie,并作为 cookie 提供给应用程序如果他们重新加载页面,则为计数的默认值。这样他们就可以从上次中断的地方恢复应用程序。我试图通过以下方式做到这一点:
-
让函数“
check cookie count
”为count
分配一个新值(默认为 1),声明如果存在先前的 cookie 用户 C,则将该值分配给计数。 -if (userCNT != "") {count = userCNT;}
-
当应用程序运行一次时,
update
函数会运行,该函数会运行其他几个函数,包括使用全局计数的当前值更新 cookie -setCookie("userC",count,365);
我已经设法让网站保留 cookie(第一次使用 cookie)...但是,当我在保留计数 cookie 后重新加载它时,它就停止工作了。只有在 checkcookieCount
函数运行后才会发生这种崩溃,然后根据我所知道的,当它显示为 count = userCNT
时。当我查看 chrome/firefox 开发人员任务管理器时,我发现该页面正在消耗大量内存。我不知道这里发生了什么,也没有看到任何错误消息来指明方向。这是相关的(我认为)代码。我的猜测是我正在做一些在那里创建无限循环的事情,而我对饼干世界的无知导致我犯了一个错误。有什么想法吗?
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",365);
jsoner();
document.getElementById("kounter2").innerHTML = "Images Tagged: " + (count - 1);
}
我已尝试删除此处的大部分不相关代码,但如果您想查看整个站点的运行情况(重现错误),您可以查看它 here,或者完整存储库 here
更新 2:经过进一步调查,主要问题似乎是与 cookie 相关的计数。 0 和 1 的值有效,但超过此值的任何值都会导致页面崩溃。在这一点上,我已经尝试了几种不同的方法。我几乎可以肯定有一些关于 Javascript 的规则我误解了 - 我已经清楚地创建了一个循环 (userC cookie
-> count
-> increment count
-> userC cookie
。 .. 但我不明白这怎么可能是个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)