检查窗口是否打开并仅打开一次新窗口?

时间:2012-03-21 07:16:37

标签: javascript jquery

当用户使用jquery文档就绪函数访问我的网站时,我使用下面的代码打开一个新窗口。

<script type="text/javascript">

$(document).ready(function(){
  window.open('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizable=yes,top=460,left=600'); 
return false
});

</script>

但是,它会在每个包含此代码的页面上弹出。 对于没有打开此窗口的用户,我想要做的只是弹出这个窗口ONCE。 如果用户打开了此窗口,则不再弹出新窗口。

那我怎么能这样做?

6 个答案:

答案 0 :(得分:5)

give the window a name

  

如果已存在名为strWindowName的窗口,则strUrl将加载到现有窗口中。

只需确保您的开窗器使用相同的名称,以便在具有该名称的窗口已打开时在同一窗口中打开它们。 (哇!绕口令!)

答案 1 :(得分:1)

您可以尝试向打开窗口的用户添加Cookie。在每个页面上检查它。当窗户关闭时,别忘了擦掉它 About JS cookies

答案 2 :(得分:0)

答案 3 :(得分:0)

使用browsers' cookies。这是一种在多个页面上保留一些“变量”的方法,只能在您的域上操作。

由于您使用的是jQuery,我建议您使用this plugin

这样,代码就像:

一样简单
$(document).ready(function() {
    if ($.cookie('opened') !== null) {
        window.open([...])
        $.cookie('opened', 'is')
    }
})

答案 4 :(得分:0)

    <script type="text/javascript">
        $(function () {
            //get the complete queryString (url) for the popup page
            var url = document.URL;

            //use sessionStorage to control whether the page has been opened or not
            //try get the sessionStorge name, if = nothing, open page
            if (sessionStorage.getItem('visited') == null) {
                //then set a sessionStorage name and value,
                //it is important that this line appears BEFORE the window.open
                //else you will get a loop because ==null then is always true
                //at last set a sessionStorage value so it no longer ==null 
                //and open window - once.
                sessionStorage.setItem("visited", "Ja");
                window.open(url, '_blank', 'width=750, height=1010');
                }
             });
    </script>

此弹出窗口只会打开一次,客户端浏览器中没有存储cookie,下次打开浏览器时,sessionStorage就会消失。 (上面的$ .cookie('open')示例不起作用!) 亲切的问候, 奥拉巴尔斯塔德

答案 5 :(得分:-3)

将变量添加到文件中,如Flag

<script type="text/javascript">

var myWindowFlag = false;

$(document).ready(function(){
  if(!myWindowFlag){ window.open('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizable=yes,top=460,left=600'); 
myWindowFlag= true;}
return false
});    
</script>

这可能会对你有所帮助

编辑:我们可以像@devjosh所说的那样做

<script type="text/javascript">

    $(document).ready(function(){
      if(!getCookie(myWindowFlag)){ window.open('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizable=yes,top=460,left=600'); 
}    return false
    });    
    </script>

并在新窗口中重置cookie值onload