【发布时间】:2012-03-04 05:24:18
【问题描述】:
我正在尝试帮助我的一个朋友,他必须对弹出窗口的人进行测试(她研究通信科学)。所以基本上我们有 2 个网站,每个网站都有不同的弹出窗口。她问我是否可以创建每分钟显示一个弹出窗口的东西。但是分钟必须在多个页面上工作(例如,它从索引开始,但是当我浏览网站并且分钟结束时,无论网站上的哪个页面打开,都必须显示弹出窗口)。
我的 javascript 有点生疏,因为自从我接触这件事以来已经 3 年前了。因此,对于这个问题,我使用了一些旧的 javascript 分配,我想我会使用 cookie 来解决问题。我在使用全局变量时遇到了一些问题。我希望该网站可以在 firefox/chrome/IE 上运行,因为她必须在大学计算机上对其进行测试,而且我知道他们在那里使用的浏览器。
所以基本上 console.log("timeRemaining") 将在 firefox(使用 firebug)中显示正确的数字倒计时,但在 chrome 记录器(使用检查元素)中,它将显示 NaN。因此不会显示 div(由于弹出窗口阻止程序,我不使用新窗口)。
问题可能出在哪里?我已经确保使用 parseInt 解析从 cookie 返回的值。我什至不明白为什么这个简单的代码会在 Chrome 中返回与在 Firefox 中不同的结果。
function setCookie(name, value) {
var str = name + "=" +escape(value);
str += "; expires= Tue, 28 Dec 2013 00:00:00";
document.cookie = str;
}
function getCookie(name) {
var allCookies = document.cookie.split("; "); // spatie!
for(i in allCookies) {
var singleCookie = allCookies[i].split("=");
if(singleCookie[0] == name) {
return unescape(singleCookie[1]);
}
}
return undefined;
}
function showLayer(layerId){
console.log("showlayer");
}
function checkTime() {
timeRemaining = timeRemaining - 1;
console.log(timeRemaining);
if(timeRemaining == 0) {
showLayer("popup");
timeRemaining = stdTijd;
}
setCookie("tijd", timeRemaining);
}
function loaders() {
timeRemaining = parseInt(getCookie("tijd"));
if(timeRemaining == undefined) {
console.log("new cookie created");
setCookie("tijd", stdTijd);
timeRemaining = parseInt(getCookie("tijd"));
}
console.log("cookie set, timeremaining=" + timeRemaining);
setInterval(checkTime, 1000);
}
var timeRemaining;
var stdTijd = 10;
if (document.getElementById) window.onload = loaders;
NaN 在 console.log(timeRemaining);在函数 checkTime 中。
Firefox 打印:
loaded, display = none
cookie set, timeremaining=10
9
8
7
..
Chrome 打印:
loaded, display = none
cookie set, timeremaining=NaN
NaN
NaN
..
提前致谢。
编辑:删除我的 cookie 后,我在 Firefox 中也得到了一个 NaN。所以问题不仅仅是 firefox 和 chrome 之间的区别,而是我的代码中的一个基本错误。
编辑2:
【问题讨论】:
-
那么您是否检查过“timeRemaining”cookie 中的内容,即传递给
parseInt()的值的来源? -
我在 chrome 和 firefox 中都有 NaN,请清除 firefox cookie 并重试。
-
谢谢 xdazz。现在我也成为了 Firefox 中的 NaN。所以问题出在我的代码中。
标签: javascript firefox google-chrome nan