【问题标题】:Bootstrap modal and cookie引导模式和 cookie
【发布时间】:2014-12-25 03:48:30
【问题描述】:

我创建了一个引导模式弹出窗口,它完美地出现和消失。我需要做的是检查是否存储了 cookie,并且在用户在网站上时只出现一次弹出窗口。我也有一个关闭按钮。目前,每次我刷新页面时它都会出现,我不知道如何让它工作。我通过谷歌搜索看到了几个例子,但对我没有任何帮助。任何人都可以帮忙吗?谢谢

这是我的 Javascript:

$(document).ready(function () {
    if (document.cookie != "") {
        $("#myModal").modal("show");
        $("#myModalClose").click(function () {
          $("#myModal").modal("hide");
        });
    }
});

这是我的 HTML:

<div id="myModal" class="modal fade in">
    <div class="inner-modal">
        <div class="modal-container">
            <p>some text</p>
            <button class="close" data-dismiss="modal" data-target="#myModal">Hide this message</button>
        </div>
    </div>  
</div>

【问题讨论】:

  • 不应该if (document.cookie != "")if (document.cookie == "")
  • 嗨@DavidG,当我将它从 != 更改为 == 我的模式弹出窗口中断时。
  • 以什么方式中断?无论如何写if (!document.cookie) 可能会更好
  • 从某种意义上说,模式弹出窗口一直显示在屏幕上,其背后的内容并没有像应有的那样灰显,关闭按钮也不起作用。

标签: javascript jquery twitter-bootstrap cookies popup


【解决方案1】:

你的逻辑有点前后矛盾。您需要检查是否尚未设置 cookie,然后显示模式。此外,您还需要在之后设置 cookie,以免再次发生。

$(document).ready(function () {
    //if cookie hasn't been set...
    if (document.cookie.indexOf("ModalShown=true")<0) {
        $("#myModal").modal("show");
        //Modal has been shown, now set a cookie so it never comes back
        $("#myModalClose").click(function () {
            $("#myModal").modal("hide");
        });
        document.cookie = "ModalShown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

<div id="myModal" class="modal fade in">
    <div class="inner-modal">
        <div class="modal-container">
            <p>some text</p>
            <button id="myModalClose" class="close" data-dismiss="modal" data-target="#myModal">Hide this message</button>
        </div>
    </div>  
</div>

【讨论】:

  • 我尝试了上面的代码,但没有任何反应。模态弹窗一直在屏幕上,不做任何事情或消失。
  • 我现在已经修好了(我真的不应该在没有测试的情况下编写代码!)
  • 感谢@DavidG 更新答案,但是当我点击刷新时,模式再次弹出,然后在屏幕上冻结并停止工作。无法按下关闭按钮或执行任何操作。
  • 其他东西可能会干扰,它对我来说很好用。这是Bootply中的一个示例(在浏览器中以隐身模式打开它以作为新用户进行测试)
  • 感谢@DavidG,我按照您的建议对其进行了测试,它确实有效,但不幸的是,当我将它添加到我的代码中时,它并没有起作用。一定有某种干扰,但我不知道它是什么,因为我确实有纯 html 和 javascript,所以我无法弄清楚是什么导致它对我不起作用。最终我最终使用了 jquery-cookie.js 插件 -> github.com/carhartl/jquery-cookie.
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多