【问题标题】:Popup windows on page load with specific period特定时间段的页面加载弹出窗口
【发布时间】:2013-09-12 06:00:57
【问题描述】:

在我的页面上,我需要设置一个带有特别优惠的弹出窗口,但我不想每次访问主页时都骚扰我的客户,所以我想使用 cookie 进行检查并在特定时间段显示弹出窗口。例如,每周一次会很棒。我是 javascript 的新手,我刚刚下载并使用了 Reveal 弹出插件,但我不知道如何设置它。

这是我的代码:

    <head>
    <link rel="stylesheet" href="reveal.css">

    <script src="jquery-1.4.4.min.js" type="text/javascript"></script>

    <script src="jquery.reveal.js" type="text/javascript"></script>
   </head>

这是弹出窗口

<body>
....
    <div id="myModal" class="reveal-modal">
         <h1>Modal Title</h1>
         <p>Any content could go in here.</p>
         <a class="close-reveal-modal">&#215;</a>
    </div>
</body>

现在我可以通过点击看起来像这样的链接来运行它

<a href="#" data-reveal-id="myModal">Click Me For A Modal</a>

但我想用 cookie 在页面加载时加载它。 您可以通过单击标题下方的橙色标签 Click Me For A Modal 来查看页面上的示例。 http://mmiuris.sk

感谢您的任何想法。

编辑: 该脚本正在运行,但我无法显示插件框(它甚至不制作 cookie 文件) 代码是这样的,看看有没有错误?

<head>
    <link rel="stylesheet" href="reveal.css">
    <script src="jquery-1.4.4.min.js" type="text/javascript"></script>
    <script src="jquery.reveal.js" type="text/javascript"></script>

    <script type="text/javascript">
        function setCookie(c_name, value, exdays) {
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
            document.cookie = c_name + "=" + c_value;
        }

        function getCookie(c_name) {
            var c_value = document.cookie;
            var c_start = c_value.indexOf(" " + c_name + "=");
            if (c_start == -1) {
                c_start = c_value.indexOf(c_name + "=");
            }
            if (c_start == -1) {
                c_value = null;
            }
            else {
                c_start = c_value.indexOf("=", c_start) + 1;
                var c_end = c_value.indexOf(";", c_start);
                if (c_end == -1) {
                    c_end = c_value.length;
                }
                c_value = unescape(c_value.substring(c_start, c_end));
            }
            return c_value;
        }

        function showModal() {
            // Check if cookie existes
            var expireDate = getCookie("showpopup");
            var today = new Date().toUTCString();
            alert(today);
            if (expireDate != null && expireDate > today) {
                //Do nothing!
            }
            else {
               //ShowPopup here!
                        $(document).ready(function() {
        $('#myModal').reveal();
        });
                //Create cookie
                setCookie("showpopup", "anything", 1);
            }
        }    
   </script>
   </head>

 <body onLoad="showModal()">    
        <div id="myModal" class="reveal-modal">
         <h1>Modal Title</h1>
         <p>Any content could go in here.</p>
         <a class="close-reveal-modal">&#215;</a>
    </div>

...
</body>

【问题讨论】:

    标签: javascript jquery cookies popup


    【解决方案1】:

    在您的主页上添加此代码。修改它以显示弹出窗口而不是显示模式中的警报。此示例将 cookie 设置为每天过期。将其更改为 7 天或您想要的任何值...

    <script type="text/javascript">
            function setCookie(c_name, value, exdays) {
                var exdate = new Date();
                exdate.setDate(exdate.getDate() + exdays);
                var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
                document.cookie = c_name + "=" + c_value;
            }
    
            function getCookie(c_name) {
                var c_value = document.cookie;
                var c_start = c_value.indexOf(" " + c_name + "=");
                if (c_start == -1) {
                    c_start = c_value.indexOf(c_name + "=");
                }
                if (c_start == -1) {
                    c_value = null;
                }
                else {
                    c_start = c_value.indexOf("=", c_start) + 1;
                    var c_end = c_value.indexOf(";", c_start);
                    if (c_end == -1) {
                        c_end = c_value.length;
                    }
                    c_value = unescape(c_value.substring(c_start, c_end));
                }
                return c_value;
            }
    
            function showModal() {
                // Check if cookie existes
                var expireDate = getCookie("showpopup");
                var today = new Date().toUTCString();
                alert(today);
                if (expireDate != null && expireDate > today) {
                    //Do nothing!
                }
                else {
                    //ShowPopup here!
                    alert('This is the popup!');
                    //Create cookie
                    setCookie("showpopup", "anything", 1);
                }
            }        
        </script>
    

    【讨论】:

    • 谢谢,但我该如何更改警报('这是弹出窗口!');到一些类似 Click Me For A Modal 的脚本(这会打开弹出窗口)。在插件站点上写着“基本上,将“data-reveal-id”属性放在一个对象上,并使其值成为您的模态ID。但我不明白。
    • 试试这个:$('#myModal').reveal();
    • 它不起作用:/,我用谷歌搜索并尝试了另一种变体,但也不起作用......看到该代码中有任何错误吗? (更新了我的第一篇文章)谢谢
    • 缺少 setCookie 和 getCookie 方法...您是否阅读了任何错误消息?
    • 我正在使用 setCookie 和 getCookie 方法,我刚刚发布了我进行更改的部分
    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多