如何使用JavaScript一天只显示一次警报?

如何使用JavaScript一天只显示一次警报?,javascript,Javascript,因此,我建立了一个网站,每当用户登录时,它都会向用户发出警报现在,我知道每次用户登录时都会显示警报,但我希望每天只显示一次。我希望此警报在每天的初始页面加载时显示。我如何才能做到这一点? 这是我的代码:(警报在10秒内消失。) 提前谢谢。:) 我会在后台做。每次用户登录时,您都会从服务器查询该用户是否在当天登录。如果否,则显示警报并发送回服务器,用户现在已登录并设置一些标志。 每天早上0点,您只需取消设置所有标志,就可以使用Cookie进行检查 每次用户进行日志记录时,您都会检查cookie,以

因此,我建立了一个网站,每当用户登录时,它都会向用户发出警报
现在,我知道每次用户登录时都会显示警报,但我希望每天只显示一次。我希望此警报在每天的初始页面加载时显示。我如何才能做到这一点?

这是我的代码:(警报在10秒内消失。)


提前谢谢。:)

我会在后台做。每次用户登录时,您都会从服务器查询该用户是否在当天登录。如果否,则显示警报并发送回服务器,用户现在已登录并设置一些标志。
每天早上0点,您只需取消设置所有标志,就可以使用Cookie进行检查

每次用户进行日志记录时,您都会检查cookie,以查看它今天是否已登录。如果是第一次,则显示解除警报并创建一个在一天结束时过期的cookie

下次如果用户在同一天登录,你检查cookie,它就会在那里,因此,你选择不通知他


签出此文件了解如何创建Cookie

最好的方法是使用后端,您可以很容易地从那里跟踪时间。然后您可以创建一个简单的get请求来确定他注册的时间。 但如果您不想涉及后端,则可以使用本地存储或cookie

// storage sample
    localStorage.setItem('date-registered', '07/12/2020')
    localStorage.getItem('date-registered')
    
// get current date
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
然后你可以通过比较来做剩下的事情

获取当前日期的源

按照这些思路应该可以完成工作。它是在用户登录后第一次看到弹出窗口时设置cookie。cookie的到期日为当天结束时

请注意,代码段在StackOverflow上不起作用,因为我们不允许从iFrame设置cookie。在你自己的网站上,这个或类似的东西应该会起作用

COOKIE\u NAME=“loginpopup”
函数setLoginCookie(){
//当前时间
var d=新日期();
//下一个日历日的开始
d、 设置时间(新日期(d.getFullYear(),d.getMonth(),d.getDate()+1));
document.cookie=COOKIENAME+“=1;expires=“+d.ToutString()+”;path=/”;
}
函数shouldShowLoginPopup(){
return!isCookieSet(COOKIE\u名称);
}
函数isCookieSet(名称){
变量_name=name+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(var i=0;i{
//用于调试的显示器
$(“#showpopup”).text(shouldShowLoginPopup());
//在实际情况下,您不会将其绑定到按钮,而是添加
//showLoginPopupIfEssential()在页面上调用document ready,其中
//用户登录后登陆。此处此按钮仅用于调试。
$(“#登录”)。单击(如有必要,显示登录)
});

用户登录时的事件触发器
是否应显示弹出窗口?:
是否有其他因素决定用户当天是否首次加载页面?如查询参数或cookie值?谢谢。但如何取消设置标志?@RyanOh最简单的方法是保留登录日志或列/字段“上次登录”在您的数据存储中。然后在用户登录后看到的页面上,您首先获取当前值,然后将其设置为当前时间。但是,如果浏览器删除exitYes@JcWasmx86上的所有Cookie,则不会起作用,您是对的!我只是提供了一个不使用后端应用程序的应用程序。我认为这将在很大程度上取决于他的场景。使用bac肯德是更安全的方法!!
// storage sample
    localStorage.setItem('date-registered', '07/12/2020')
    localStorage.getItem('date-registered')
    
// get current date
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;