当用户使用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。 如果用户打开了此窗口,则不再弹出新窗口。
那我怎么能这样做?
答案 0 :(得分:5)
如果已存在名为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