【发布时间】:2011-05-04 13:46:40
【问题描述】:
对于某个项目,我希望在用户首次访问页面时出现一个警报/通知框,然后假设用户点击“x”关闭通知,然后它将停止出现在后续访问——我想这需要设置一个 cookie(通过 PHP),也许包含警报 div 通过 jQuery 响应 cookie 的存在或不存在?任何关于如何开始的基本方向都非常感谢......
【问题讨论】:
-
到目前为止我什么都没有 :) 问题是(至少最初是)最好的通用方法
对于某个项目,我希望在用户首次访问页面时出现一个警报/通知框,然后假设用户点击“x”关闭通知,然后它将停止出现在后续访问——我想这需要设置一个 cookie(通过 PHP),也许包含警报 div 通过 jQuery 响应 cookie 的存在或不存在?任何关于如何开始的基本方向都非常感谢......
【问题讨论】:
您可以使用浏览器端的 cookie 来做到这一点:查看 jquery cookie 插件 http://plugins.jquery.com/project/Cookie。
编辑:这是我使用它的方式。
保存有用的通知会保留我的 helpfulnotices 对象,因此我不会显示任何超过应显示的有用通知。
if(!helpfulnotices.multiupload){
helpfulnotices.multiupload = true;
top.flicsy.notify_user(flicsy_lang.message_upload_multiple, "", true);
self.save_helpful_notices();
}
这是使用 jquery JSON cookie 扩展保存结构的代码:
save_helpful_notices: function()
{
var date = new Date();
date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000)); // expire in a week or thereabouts
jQuery.JSONCookie('helpfulnotices', helpfulnotices, {path: '/', expires: date });
},
在页面加载时,我会重新水合它:
helpfulnotices = jQuery.JSONCookie('helpfulnotices');
【讨论】:
您应该可以使用 cookie 进行设置。但是,它并不能保证用户下次不会看到它。它也不能保证新用户会看到它(如果他们在共享计算机上)。
这些事情总是最好与“用户登录系统”结合使用,这样您就可以单独跟踪每个用户。然后您可以将设置存储在数据库中,并在后续访问时为每个用户调用设置。
【讨论】:
您可以将信息保存在 cookie 中,但这意味着您将始终从客户端到服务器来回发送此 cookie。
如果你想防止这种情况发生,你可以使用名为 localStorage 的新 HTML5 变量
http://www.bing.com/search?q=html5+localStorage&src=ie9tr
所以基本上,如果 localStorage 存在于浏览器中,如果它不使用 cookie 回退,则可以使用它。这将是最佳解决方案。
【讨论】: