Jquery模式弹出窗口每个用户会话只显示一次

时间:2016-09-26 02:02:48

标签: jquery

我有一个jquery函数,在页面加载时显示模式弹出窗口。有没有办法让每个用户会话只显示一次。我有很多帖子,但无论出于何种原因,我都无法让他们在我的剧本中工作。

我的剧本:

$(document).ready(function() {

    $(window).load(function(){
        $( "#dialog1" ).dialog();
    });

});

模态弹出窗口由:

组成
<div id="dialog1" title="IMPORTANT!">
    <div class="imaindateselleft_padding_right_red">Content here</div>
</div>

先知道你的时间和帮助。

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是与cookie集成。让它显示对话框并存储对话框已在cookie中显示的值,以便下次不会显示。

在这种方法中,我使用的是jQuery Cookie。 (随意使用vanilla javascript到r / w cookies)。我还假设您使用jQuery UI来调用dialog

$(document).ready(function() {
    var dialogShown = $.cookie('dialogShown');

    // On newer versions of js-cookie, API use:
    // var dialogShown = Cookies.get('dialogShown');

    if (!dialogShown) {
        $(window).load(function(){
            $( "#dialog1" ).dialog();
            $.cookie('dialogShown', 1);
            // On newer versions of js-cookie, API use:
            // Cookies.set('dialogShown', 1);

        });
    }
    else {
        $("#dialog1").hide();
    }
});

上面的代码所做的只是在之前弹出对话框后设置cookie。允许同一用户再次看到对话框的唯一方法是cookie expires(您可以设置),或者用户清除Cookie。

编辑:实现此目的的第二种方法是,如果浏览器支持,您可以使用localStorage。

$(document).ready(function() {
    var dialogShown = localStorage.getItem('dialogShown')

    if (!dialogShown) {
        $(window).load(function(){
            $( "#dialog1" ).dialog();
            localStorage.setItem('dialogShown', 1)
        });
    }
    else {
        $("#dialog1").hide();
    }


});