我正在为网页开发JavaScript。当用户空闲一段时间时,此脚本必须创建一个弹出窗口。当弹出窗口显示时,用户可以选择关闭弹出窗口或将其最小化。
如果关闭弹出窗口,网站内进一步打开的页面将不再打开弹出窗口。在最小化的情况下,它也不应该这样做。但是,当用户第一次在任何页面上有一定的空闲时间时,它将出现。
它到目前为止工作,创建弹出窗口并关闭流行音乐作品(并且它不再打开)。但它不再适用于刷新页面。所以存储不起作用。我知道它是因为我的变量和刷新也会重新启动脚本,因此变量的初始化会重写会话值。
所以基本上我的问题是:第一次初始化变量是怎么做的,而不是在刷新后进一步使用?
我的代码如下:
var isClosed = new Boolean(false);
var isShrinked = new Boolean(false);
var test = "Tesst";
sessionStorage.setItem("session", isClosed=false);
function close_popup() {
$('#' + 'box').fadeOut('slow');
sessionStorage.setItem("session", isClosed=true);
}
(function idelor(){
document.onclick = document.onmousemove = document.onkeypress = function() {
idleCounter = 0;
};
window.setInterval(function() {
if (sessionStorage.getItem("session").toString() == "false") {
if (isShrinked == false) {
if (++idleCounter >= IDLE_TIMEOUT) {
var scriptCode = document.createElement('p');
scriptCode.id = 'Sentotal';
document.getElementsByTagName('body')[0]
.appendChild(scriptCode);
document.getElementById("Sentotal").innerHTML = boxTotal;
}
}
}
}, interval);}());
答案 0 :(得分:1)
你可以使用cookie来解决这个问题。
FillLayout
当浏览器关闭时,Cookie会重置(默认情况下)。
答案 1 :(得分:0)
我使用了Hin Fan Chan建议使用cookies,并提供以下稳定工作解决方案编码:
现在只有两个变量作为Cookie的常量名称:
var CLOSE_CONSTANT = "CloseCookie";
var MINIMIZE_CONSTANT = "MinimizeCookie";
创建和获取Cookie的简单功能。请注意,"错误"在getCookie(...)
中对于脚本的初始化非常重要!:
function setCookie(name, state) {
var cname = name;
var value = state;
document.cookie = cname + "=" + value;
}
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 "error";
}
我还构建了一个cookieChecker(...)
函数,该函数会自动填充错误Cookie(那些不存在atmo的错误)&#34; false&#34;:
function cookieChecker(name) {
switch (getCookie(name)) {
case "error":
setCookie(name, "false");
break;
default:
break;
}
}
现在是最后一个函数,它是HTML打开的唯一函数。 cookieChecker(...)
使用了两次:用于最小化和关闭弹出窗口。这两个函数只是将cookie的state
设置为true
(并将框淡出):
(function idelor(){
var minutes = false;
var interval = minutes ? 60000 : 1000;
var IDLE_TIMEOUT = 5;
var idleCounter = 0;
document.onclick = document.onmousemove = document.onkeypress = function() {
idleCounter = 0;
};
cookieChecker(MINIMIZE_CONSTANT);
cookieChecker(CLOSE_CONSTANT);
window
.setInterval(
function() {
switch (getCookie(CLOSE_CONSTANT) + " "
+ getCookie(MINIMIZE_CONSTANT)) {
case "false false":
if (++idleCounter >= IDLE_TIMEOUT) {
var scriptCode = document.createElement('p');
scriptCode.id = 'Sentotal';
document.getElementsByTagName('body')[0]
.appendChild(scriptCode);
document.getElementById("Sentotal").innerHTML = BOXTOTAL;
}
default: break;
}
}, interval);
}())