Javascript 在站点的一次导航中仅显示一次弹出窗口

Javascript 在站点的一次导航中仅显示一次弹出窗口,javascript,jquery,web,laravel,popup,Javascript,Jquery,Web,Laravel,Popup,我有一个网站创建使用拉威尔。我希望用户能够看到一个弹出窗口,他第一次来到我的网站 第一次我的意思是-用户访问我网站上的任何页面(这是第一次),访问网站上的一些链接页面(现在,这些页面访问不是第一次),在同一个选项卡中打开facebook(从而离开我的网站),然后在同一个选项卡中再次打开我的网站(这是第一次) 一次弹出的基本原因是,在用户浏览网站时,不要一次又一次地打扰用户。但是,一旦他离开并再次回来,我想将其视为一次新的访问(并再次显示弹出窗口) 我知道我可以用jQuery中的setTimeou

我有一个网站创建使用拉威尔。我希望用户能够看到一个弹出窗口,他第一次来到我的网站

第一次我的意思是-用户访问我网站上的任何页面(这是第一次),访问网站上的一些链接页面(现在,这些页面访问不是第一次),在同一个选项卡中打开facebook(从而离开我的网站),然后在同一个选项卡中再次打开我的网站(这是第一次)

一次弹出的基本原因是,在用户浏览网站时,不要一次又一次地打扰用户。但是,一旦他离开并再次回来,我想将其视为一次新的访问(并再次显示弹出窗口)

我知道我可以用
jQuery
中的
setTimeout()
做弹出窗口的事情。但如何只做一次呢?请注意,pop可以出现在任何页面上(如果是当前访问的第一页),而不仅仅出现在主页上。

使用类似的插件,然后只需执行以下操作:

if(!$.cookie("popup"))
{
 your_popup_function();
 $.cookie("popup",true);
}
编辑:由于您编辑了关于“首次访问”定义的问题,我建议使用Walter Brand建议的方法,使用推荐人。摘自:


您可以使用document.referer,并检查上一页是否属于您的域。但出于安全原因,并非所有访问者/浏览器都会返回此值


所以这是不可靠的。

不使用插件的解决方案:

var adCookie = document.cookie.indexOf('ad_displayed')

if (adCookie != -1) {
   your_popup_function();
   document.cookie = "ad_displayed=1";
}

这就是想法,当然你可以在cookie上设置过期日期。阅读更多

您好,我在解决客户要求“在导航到站点的不同页面时只显示一次弹出窗口”时使用了此解决方案,它对我很有用。 我使用cookie并将cookie值设置为cookie创建时间,然后使用javascript setInterval函数将cookie值与当前时间进行差异,并将差异与我想要显示弹出窗口及其工作的时间进行比较

$(document).ready(function() 
{
var myVar=""; 

 function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}

function callagain()
          { 
            if(!getCookie("magazine"))
             {
              var c1= new Date();
              var c2=c1.getTime();
              document.cookie="magazine="+c2;
              }   
            var cvalue= getCookie("magazine");
            var cvalue2=parseInt(cvalue);
            myVar=setInterval(function(){ call22(cvalue2);},1000);     
       }

function call22(abcd)
{
var curdate = new Date();
var curtime = curdate.getTime();
var curtime2=parseInt(curtime);
var result=curtime2 - abcd;
if( (result >30000) && (result < 31000) )
             {
               alert(“POP UP  ONCE THROUGHOUT THE SITE”);
                clearInterval(myVar);
             }
}
callagain();                 
});
$(文档).ready(函数()
{
var myVar=“”;
函数getCookie(名称)
{
var re=new RegExp(name+“=([^;]+)”);
var值=re.exec(document.cookie);
返回值(值!=null)?unescape(值[1]):null;
}
函数callreath()
{ 
如果(!getCookie(“杂志”))
{
var c1=新日期();
var c2=c1.getTime();
document.cookie=“杂志=”+c2;
}   
var cvalue=getCookie(“杂志”);
var cvalue2=parseInt(cvalue);
myVar=setInterval(函数(){call22(cvalue2);},1000);
}
函数调用22(abcd)
{
var curdate=新日期();
var curtime=curdate.getTime();
var curtime2=parseInt(curtime);
var结果=curtime2-abcd;
如果((结果>30000)和&(结果<31000))
{
警报(“在整个站点中弹出一次”);
净距(myVar);
}
}
再次调用();
});

我猜使用cookie的问题在于,当您导航到另一个站点,然后在同一选项卡中返回时,会话cookie仍然可用。您无法知道访问者何时离开您的站点,然后在同一选项卡中返回cookie。所以在这种情况下,这个答案是没有用的。如果你想要最大的性能和最小的代码大小,这个cookie解决方案比我的更可取。
$(document).ready(function() 
{
var myVar=""; 

 function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}

function callagain()
          { 
            if(!getCookie("magazine"))
             {
              var c1= new Date();
              var c2=c1.getTime();
              document.cookie="magazine="+c2;
              }   
            var cvalue= getCookie("magazine");
            var cvalue2=parseInt(cvalue);
            myVar=setInterval(function(){ call22(cvalue2);},1000);     
       }

function call22(abcd)
{
var curdate = new Date();
var curtime = curdate.getTime();
var curtime2=parseInt(curtime);
var result=curtime2 - abcd;
if( (result >30000) && (result < 31000) )
             {
               alert(“POP UP  ONCE THROUGHOUT THE SITE”);
                clearInterval(myVar);
             }
}
callagain();                 
});