如何每n次点击打开一个弹出窗口?

时间:2014-10-23 11:59:21

标签: javascript

点击链接后,如何在新标签页中打开弹出窗口' n'次?哪里' n'可以设置为任何正整数。

我目前正在使用此代码,也可在网站上找到;

var sync = true;
window.onbeforeunload = doSync;

function doSync() {
if (sync && !window.sessionStorage.getItem('popupShown')) {
    window.sessionStorage.setItem('popupShown', 1);
    window.open('myurl', '_blank');
}
}

这会在第一次点击时打开弹出窗口,每个浏览器会话一次。

4 个答案:

答案 0 :(得分:0)

您可以添加一个计数器:

var sync = true;
window.onbeforeunload = doSync;
var n = 5; // total number of clicks
var current = 1; // current number of clicks

function doSync() {
    if (sync && !window.sessionStorage.getItem('popupShown') && current == n) {
        window.sessionStorage.setItem('popupShown', 1);
        window.open('myurl', '_blank');
    }
    else if (sync && !window.sessionStorage.getItem('popupShown') && current < n) {
        current++;
    } 
}

答案 1 :(得分:0)

最好将“popupShown”变量从本地存储中取出并在测试之前将其转换为整数,然后在将其设置回本地存储之前将其递增。

这样的事情:

var sync = true;
var n = 10;
window.onbeforeunload = doSync;

function doSync() {
var popupCount = window.sessionStorage.getItem('popupCount');
if(!popupCount)
  popupCount = 0;

if (sync && popupCount < n) { 
    window.sessionStorage.setItem('popupShown', popupCount++);
    window.open('myurl', '_blank');
}

答案 2 :(得分:0)

简单和教学解决方案:

您可以使用全局变量或任何更好的方法来存储计数器变量。

当用户点击您的链接时,会调用javascript函数并递增计数器。

如果点击次数达到打开弹出窗口,则执行此操作并再次设置counter = 0。

i = 0; // There are better ways to implement this counter. This is the simplest way.

function popup()
{
    i++;
    if(i==5)
    {
        alert('PopUp');
        i = 0;
    }
}

答案 3 :(得分:0)

找到了这个解决方案

<script type"text/javascript">

function popup(){

if(!sessionStorage.pageCounter){

open('http://yahoo.com', '_blank');
sessionStorage.setItem('pageCounter',0);

}

否则if(sessionStorage.pageCounter == 4){

open('http://yahoo.com', '_blank');

}

else if(sessionStorage.pageCounter == 9){

open('http://yahoo.com', '_blank');

}

sessionStorage.setItem('pageCounter',parseInt(sessionStorage.pageCounter)+1);

}

弹出窗口会在第一次,第五次和第十次点击时打开