以下是用例:
如果用户响应该对话框,系统会提示用户输入一个对话框,然后该对话框不会再显示给用户。
这可以通过删除$("#dialog-box").remove()
之类的对话框来完成
但问题是刷新时会再次出现对话框。
我对解决方案的猜测(不确定这是否可行):
当用户响应对话框时,创建某种全局变量,如SHOW='true'
,刷新页面时看看SHOW
是true
,然后从DOM中删除对话框。
欢迎提出任何想法。
解决方案
使用cookie方法:
当名称为"dialogbox"
的Cookie值不存在时,请创建Cookie,其值为"foo"
。
如果cookie的值为"foo"
,则仅显示对话框。
当用户响应对话框时,将该cookie的值更改为"bar"
。
由于Cookie值不是"foo"
,因此不会显示对话框。
发现this很有用。
感谢您的回答和评论。
答案 0 :(得分:1)
有多种解决方案,第一种是使用服务器端验证。如你所说,创建一个变量,如果HTML必须显示对话框,那么它必须显示,否则HTML甚至不会将对话框传递给用户。
否则,将其作为缓存对象保存到用户的浏览器。这样jQuery或JavaScript就可以处理它并向用户显示/不显示dialoug。
答案 1 :(得分:0)
每次刷新页面时都会恢复所有全局变量。要在页面重新加载之间存储状态,您必须在服务器端使用一些持久存储(cookie,客户端本地存储)或(会话,数据库)。
答案 2 :(得分:0)
您可以在第一次显示时使用设置Cookie,然后在显示框之前检查Cookie是否已设置。如果设置了cookie,则删除或不显示该框。如果没有设置cookie,请显示它。
答案 3 :(得分:0)
您无法使用全局变量执行此操作,因为在刷新时它将被还原。
如果您只想使用javascript / jQuery,我建议在接受时在网址上添加一些参数,并检查它是否存在于您的代码中。
否则使用会话,cookie或某种存储。
答案 4 :(得分:0)
正如其他答案所暗示的那样,有多种方法可以实现这种行为。以下是Cookie方法。
关闭对话框后,添加一个cookie:
document.cookie="dialogShown=1; expires=Thu, 18 Dec 2014 12:00:00 UTC; path=/"; // this cookie will expire on 18th of Dec this year
现在,将对话框设置为最初隐藏,并且仅在加载DOM并且cookie不存在后显示:
// From: http://www.w3schools.com/js/js_cookies.asp
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length,c.length);
}
return "";
}
function cookieExists(name) {
return getCookie(name) != "";
}
$(document).ready(function() {
if(!cookieExists("dialogShown")) {
$("#dialog-box").show()
}
});