1

我正在使用 Code Igniter 开发一个网站。我想在用户第一次访问我的网站时显示一个弹出窗口。如果他再次刷新,它不应该再次出现。现在我正在检查会话变量,如果它不存在,我将显示该弹出窗口。之后,我强迫该用户单击一个按钮以关闭弹出窗口。然后我向服务器发送请求以设置该会话变量。这样,如果该用户刷新页面,该弹出窗口将不会再次出现。

有没有最好的方法来完成这个动作?

4

3 回答 3

2

我不认为你描述的是一个好主意。从用户体验的角度来看——在页面打开时弹出一个窗口根本不是很酷的体验。

于 2013-07-01T11:23:01.390 回答
1

很少有网站使用这种方法,而且通常是有原因的。什么是弹出窗口?它通常是用户采取的行动的结果,或者至少是这样的想法。如果您按下该按钮并出现一个弹出窗口,那很好。但是,如果您第一次访问这个新站点,并且在您决定是否访问该站点之前就出现了一个弹出窗口,那么这对您来说并不好。

如果您坚持这样做,我宁愿建议通过javascript cookie运行它。它不需要为每个唯一用户在您的服务器上提供额外的性能,并且不包含敏感数据。在最坏的情况下,他们会操纵 cookie 并再次弹出。

就个人而言,我更喜欢像 Youtube 那样做;我进入该站点并获得一个清晰标记的框,其中包含我可以主动选择单击以获取更多信息的信息:

在此处输入图像描述 (此帐户由 castlin.se 处理。阅读更多)

这种方法可以有效地通知用户,让他们能够获得更多信息,同时又不会妨碍用户经常想要做的事情。


有没有最好的方法来完成这个动作?

不,有几种方法,它们的原因和优点。我们可以为您提供解决方案,但我们不能说“这是您必须使用的”。其中potentiel sql注入除外;它们是“必须”处理的:)

于 2013-07-01T11:14:56.473 回答
0

我在自己的(codeigniter)网站上使用 cookie。

我使用了jquery modal dialog插件。和JQUERY 饼干

我做了这样的事情:

$(function() {

    if ($.cookie('showDialog') == undefined || $.cookie('showDialog') == null || $.cookie('showDialog') != 'false') {

    $("#dialog").dialog({ 
            width: 450, 
            modal: "true",
            hide: "fade",
            show: "fade",
            closeOnEscape: false, 
            draggable: true,
            resizable: false,
            title: 'Welcome to my site', 
            close: function(event, ui){ 
                location.reload(true); 
            },
            open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();  }
        }).dialog("open");
        $(".ui-widget-overlay").css({background: "#000", opacity: 0.8});

    $.cookie('showDialog', 'false', { expires: 365 }); // set the cookie, with expiry after 1 day

}

我的对话代码:

<div id="dialog" class="hidden" title="Welcome to my website">

// Content for dialog
// Content for dialog

</div>

现在,当您单击“关闭”按钮或按钮显示的任何内容时。cookie 将被设置,如果设置了 cookie,则不会显示对话框。我添加了 1 年的到期时间。因此,如果人们不删除他们的 cookie,则今年不会显示该对话框。

于 2013-07-01T11:14:44.743 回答