【问题标题】:How to hide a DIV when reloading a page?重新加载页面时如何隐藏DIV?
【发布时间】:2018-03-19 12:06:16
【问题描述】:

我有一个显示一些信息的加载叠加层,我有一个刷新页面的按钮。但我希望加载覆盖只出现一次,而不是每次单击按钮时。 (F5 没关系)。我在想这样的事情:

<button type="button" onclick="reload();">

function reload() {
  if (window.location.reload()) {
     document.getElementById('loading').style.display = 'none';
  }
}

但它不起作用......请帮助

【问题讨论】:

  • 每次重新加载页面(从浏览器级别,如 f5),JavaScript 都会重新运行 - 新鲜。我能想到的唯一方法是跟踪某处的页面访问并将其用作确定(cookie,本地存储,更改 URL,因此重新加载是一个不同的页面......)
  • 好的,非常感谢...

标签: javascript if-statement window refresh reload


【解决方案1】:

您可以使用客户端cookie,如果覆盖已经显示一次,则为客户端cookie设置一个标志,示例代码:

原版 JS 版本

<script>
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

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 "";
}

if (getCookie('OVERLAY_ALREADY_SHOWN')) {
    document.getElementById('loading').style.display = 'none';
}
else {
    // ... some conditions ...
    setCookie('OVERLAY_ALREADY_SHOWN', true, 14); // persist two weeks
}
</script>

jQuery Cookie 版本

<script src="/path/to/jquery.cookie.js"></script>
<script>
if ($.cookie('OVERLAY_ALREADY_SHOWN')) {
    document.getElementById('loading').style.display = 'none';
}
else {
    // ... some conditions ...
    $.cookie('OVERLAY_ALREADY_SHOWN', true, { expires: 14 }); // persist two weeks
}
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多