Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查窗口是否打开,是否只打开一次新窗口?_Javascript_Jquery - Fatal编程技术网

Javascript 检查窗口是否打开,是否只打开一次新窗口?

Javascript 检查窗口是否打开,是否只打开一次新窗口?,javascript,jquery,Javascript,Jquery,当用户使用jquery document ready函数访问我的站点时,我使用下面的代码打开一个新窗口 <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')

当用户使用jquery document ready函数访问我的站点时,我使用下面的代码打开一个新窗口

<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>

$(文档).ready(函数(){
打开('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizeable=yes,top=460,left=600');
返回错误
});
然而,它不断地出现在每一个有此代码的页面上。 我想做的是,对于没有打开此窗口的用户,只弹出此窗口一次。 如果用户打开此窗口,它将不再弹出新窗口


那么我该怎么做呢???

您可以尝试向打开窗口的用户添加cookie。检查每一页。当窗口关闭时,不要忘记将其擦除。

向文件中添加一个类似于标志的变量

<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>

var myWindowFlag=false;
$(文档).ready(函数(){
如果(!myWindowFlag){window.open('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizeable=yes,top=460,left=600');
myWindowFlag=true;}
返回错误
});    
这可能对你有帮助

编辑:我们可以照@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>

$(文档).ready(函数(){
如果(!getCookie(myWindowFlag)){window.open('link','title','width=460,height=500,status=no,scrollbars=yes,toolbar=0,menubar=no,resizeable=yes,top=460,left=600');
}返回错误
});    
在新窗口中,重新设置cookie值onload

这可能会有所帮助

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

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

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

既然您使用的是jQuery,我建议您使用

这样,代码就非常简单:

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

$(函数(){
//获取弹出页面的完整查询字符串(url)
var url=document.url;
//使用sessionStorage控制页面是否已打开
//尝试获取会话存储名称,如果=nothing,请打开页面
if(sessionStorage.getItem('visited')==null){
//然后设置会话存储名称和值,
//这一行出现在窗口之前很重要。打开
//否则您将得到一个循环,因为==null始终为true
//最后设置sessionStorage值,使其不再==null
//打开窗户——一次。
sessionStorage.setItem(“已访问”、“Ja”);
打开(url“_blank”,“宽度=750,高度=1010”);
}
});
此弹出窗口将只打开一次,客户端浏览器中没有存储cookie,下次打开浏览器时,会话存储将消失。(上面的$.cookie('opened')示例不起作用!) 亲切问候,,
Ola Balstad

你必须使用cookies,看看这个链接是否有用这将始终将标志设置为false@karthik我们需要一种持久的方法来实现这一点,即cookies当用户移动到另一个页面时,标志将再次设置为“false”。我只是想告诉大家如何实现这一点。。。无论如何,谢谢@Florian Margaineg全球变量是邪恶的。无论你要做什么,总有比使用它们更好的方法。还有,我猜你的意思是,
getCookie
,这可能是一个非常方便的库,可以添加:)@codeformer这不是一个很好的回答方法至少对链接做一些描述只是复制链接和粘贴没有多大帮助,或者你应该更喜欢在评论中发布该链接。你给我一个简单的例子吗?例子和语法在那篇MDN文章中
    <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>