JavaScript变量

时间:2016-09-29 15:02:36

标签: javascript jquery initialization window popupwindow

我正在为网页开发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);}());

2 个答案:

答案 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);
}())