仅显示警报一次

时间:2014-07-15 20:58:59

标签: javascript jquery

我有这个代码,它在日历中的事件发生前30分钟显示警报,但我想在用户访问页面时显示一次(在30分钟内)。现在它显示在每个页面刷新和日历刷新(在30分钟内),因为它被设置为在一段时间后刷新事件。如何只显示一次此警报?

var mili = event.start.getTime() - now.getTime();
if(mili < 1800000 && mili > 0){    
$('.alert').dialog({ 
        buttons: [{ 
        text: "OK", 
          click: function() { 
            $( this ).dialog( "close" ); 
          }
        }]
    });
}

4 个答案:

答案 0 :(得分:13)

您可以使用localStorage(与旧浏览器不兼容):

<script type="text/javascript">
    var alerted = localStorage.getItem('alerted') || '';
    if (alerted != 'yes') {
     alert("My alert.");
     localStorage.setItem('alerted','yes');
    }
</script>

或者您可以使用Cookie,查看完整示例代码的答案: https://stackoverflow.com/a/21567127/3625883

答案 1 :(得分:2)

显示提醒时设置Cookie。然后,如果设置了cookie,您将知道不再显示警报。如果没有设置,你知道你还没有显示警报,现在应该这样做。

You can read about setting cookies in JavaScript here.

答案 2 :(得分:0)

您必须使用cookies或localStorage或sessionStorage才能执行此操作!

请参阅localStorage上的以下链接: http://www.w3schools.com/html/html5_webstorage.asp

http://www.webdesignerdepot.com/2013/04/how-to-use-local-storage-for-javascript/

答案 3 :(得分:0)

我知道这已经晚了,但您绝对不必使用本地存储或 cookie。我对这里的答案感到沮丧,所以我找到了自己的解决方案。

使用布尔值和嵌入式 if 语句。

var alerted = false;

if (x > y)
{
     y = z;
     if (alerted === false)
     {
          alert("show your message");
          alerted = true;
     }
}

如果您想再次显示警报消息,您可以稍后重置警报变量。