使弹出窗口只出现一次
Make popup appear only once
我正在使用一个内部工具编写一个网站,该工具允许使用HTML、JavaScript、JQuery和基本的Ruby on Rails。
我有一个弹出窗口,它以与此代码框中显示的方式相同的方式出现在屏幕上:
链接到代码盒。
目前,每当用户加载页面时,都会弹出此对话框。我希望它为用户弹出一次,然后当他们导航回页面时,它就不应该再显示了。
有可能做到这一点吗?
HTML:
<div id="hover"></div>
<div id="popup">
<div id="close">X</div>
<a href="https://www.stackoverflow.com" class="twitter-follow-button" data-show-count="false" data-lang="it">Halp StackOverflow, I only want this to pop up once.</a>
</div>
</div>
</div>
JS:
$(document).ready(function(){
//chiusura al click sulla parte scura
$("#hover").click(function(){
$(this).fadeOut();
$("#popup").fadeOut();
});
//chiusura al click sul pulsante
$("#close").click(function(){
$("#hover").fadeOut();
$("#popup").fadeOut();
});
});
要扩展我的注释,您可以使用javascript设置cookie。唯一的缺点是它不是持久的,这意味着如果访问者删除他的历史记录&饼干和所有的爵士乐,流行音乐将再次出现。
基本上,你会有一些代码来检查是否设置了cookie,如果没有设置,则显示弹出窗口,然后设置cookie。
if (!CHECK_COOKIE(GET_COOKIE(CUSTOM_COOKIE_NAME))) {
// generate the popup html
// and append it to the DOM
// now you set the cookie (because it wasn't set before)
setTimeout("SET_COOKIE(365)", 1000);
}
我将包括上面的cookie功能,让您了解如何使用它们。
首先,我们将从cookie检查功能开始://这个函数中的c是cookievar cookie_check=函数(c){if(c==null ||c=="){return false;}其他{返回true;}}
现在是cookie获取函数(该函数基本上为提供的name
参数获取cookie):
var cookie_get = function(name) {
if (document.cookie.length > 0) {
c_start = document.cookie.indexOf(name + "=");
if (c_start != -1) {
c_start = c_start + name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
return unescape(document.cookie.substring(c_start, c_end));
}
}
return "";
}
最后但同样重要的是,cookie设置器:
var cookie_set = function(expiredays, cookie_name, value) {
var exp = new Date();
exp.setDate(exp.getDate() + expiredays);
// set cookie
document.cookie = name + '=' + value + ';path=/' + ((expiredays == null || expiredays == 0) ? '' : ';expires=' + exp.toGMTString());
}
最后,这里有一个简单的例子:)
JSFiddle演示
上面jsfiddle演示中的cookie名称没有设置,因为他们(jsfiddle)将cookie名称设置为result
,但检查该值,您会看到差异。:)
相关文章:
- 只有当选项卡/窗口有焦点时,页面才能每5秒刷新一次
- 每个用户只显示一次放大弹出窗口
- 如何使用jQuery一次关闭多个弹出窗口
- 窗口退出时的模式弹出窗口 - 重置一次
- 每个用户仅显示一次弹出窗口
- 弹出窗口不会根据需要在每个会话中显示一次(如客户端所述)
- jQuery Slider在jQuery弹出窗口中只初始化一次
- ASP.NET:每5分钟从代码后面调用一次弹出窗口
- Bootstrap弹出窗口只出现一次
- 我想在窗口加载后只调用一次JavaScript setInterval函数
- JavaScript - 弹出窗口仅打开一次
- 让窗口在一次单击触发两个页面重定向后保持焦点
- 简单模式弹出窗口显示每个会话一次
- PHP 正在鼠标移动到窗口上执行 JavaScript.它循环在一个函数上.我怎样才能让它只执行一次
- 仅在用户登录时显示一次弹出窗口
- 编辑我的脚本并添加一个jQuery cookie以仅显示一次弹出窗口
- 窗口大小调整仅有效一次
- jQuery一次触发所有模态窗口,即使具有不同的目标 #id
- 如何使模式窗口只显示一次
- Google Chrome扩展:只创建一次窗口