关于window.open 如何保证不重复打开同一个窗口???

时间:2022-12-07 17:26:10
多个页面都有window.open 函数打开新的页面

假如说其中一个页面打开了一个页面  window.open("page1.html","win1");

在第二个页面也要打开这个页面之前,我想先作个判断,判断id叫做win1的这个页面已经被打开了

这个判断该如何实现???

在线等,拜托各位高手!!!

15 个解决方案

#1


window.open("page1.html","_blank");  //用这个关键字 _blank

#2


晕,被梅花雪抢了。。。。

#3


window.open("page1.html","");

#4


<SCRIPT LANGUAGE="JavaScript">
<!--
var opened
var oldwin
function opennew(url)
{
if(opened){oldwin.location=url;alert('next open')}
if(!opened){oldwin=window.open(url,'mm');opened=true;alert("first open")}
}

//-->
</SCRIPT>
调用格式:
<a href=# onclick=javascript:opennew('show.asp')>show</a>

#5


通常用2楼的办法,在多窗口浏览器中无用

我的函数支持多窗口浏览器

#6


楼主的意思是在a.htm中打开win1, 又在b.htm中打开win1.
前面几楼的理解有点偏差。

其实楼主何必要去判断它呢?
window.open("page1.html","win1"); 这句会自己找窗口的。如果win1不在,就开新的win1, 如果win1在,就会在原先的win1中打开页面。

#7


只要给打开窗口起个名字,就只会打开一个窗口

如:
window.open("1.htm","pag")

#8


to cuixiping(无心) 

也许我表达的意思不是太清楚。
我的原本意思是这样的: 假如说我在a.htm中打开 win1 那么b.htm中我就不打开了win1了。 因为这个win1窗口中我做了倒计时的控制,假如说 b.htm中又重新打开了那么窗口就会被重新刷新了,倒计时就会重新开始
。所以我要控制下。

to gu1dai([异域苍穹]追夢人) 

你的方法在一个窗口打开文件的时候可以保证打开一个窗口,但是现在是多个窗口同时都有可能打开这个子窗口。并且不能确定那个窗口首先打开的。

现在要控制的是只要一个窗口打开了这个win1的窗口,其他窗口就不打开了。。。




#9


一个页面中打开win1后,设定cookie值
然后再另一个页面判断cookie值,决定是否打开

#10


在不同页面之间传递变量只能用Cookie了
function SetCookie(sName, sValue)
{
  document.cookie = sName + "=" + escape(sValue) + ";";
}

function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split(";");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}

在a.htm和b.htm中这样使用:
<script>
var c=GetCookie('win1');
if(c==null || c=='closed')
{
    window.open("page1.html","win1");
    SetCookie('win1','opened');
}

在打开窗口的page1.html页面中要加上onunload=winunload(),也就是关闭窗口时将cookie值设为closed:
function winunload()
{
    SetCookie(('win1','closed');
}
</script>

#11


对只要给window.open的第二个参数命名就可以了

#12


学习

#13


我也需要这个东西。在一个窗口file1.htm中打开win1后,如何在其他窗口(除file1.htm之外的其他窗口)中访问win1窗口?

#14


采用 okey668(okey668) 的方法,用cookie

#15


嘎嘎


to okey668(okey668) 

多谢,
准备结了

#1


window.open("page1.html","_blank");  //用这个关键字 _blank

#2


晕,被梅花雪抢了。。。。

#3


window.open("page1.html","");

#4


<SCRIPT LANGUAGE="JavaScript">
<!--
var opened
var oldwin
function opennew(url)
{
if(opened){oldwin.location=url;alert('next open')}
if(!opened){oldwin=window.open(url,'mm');opened=true;alert("first open")}
}

//-->
</SCRIPT>
调用格式:
<a href=# onclick=javascript:opennew('show.asp')>show</a>

#5


通常用2楼的办法,在多窗口浏览器中无用

我的函数支持多窗口浏览器

#6


楼主的意思是在a.htm中打开win1, 又在b.htm中打开win1.
前面几楼的理解有点偏差。

其实楼主何必要去判断它呢?
window.open("page1.html","win1"); 这句会自己找窗口的。如果win1不在,就开新的win1, 如果win1在,就会在原先的win1中打开页面。

#7


只要给打开窗口起个名字,就只会打开一个窗口

如:
window.open("1.htm","pag")

#8


to cuixiping(无心) 

也许我表达的意思不是太清楚。
我的原本意思是这样的: 假如说我在a.htm中打开 win1 那么b.htm中我就不打开了win1了。 因为这个win1窗口中我做了倒计时的控制,假如说 b.htm中又重新打开了那么窗口就会被重新刷新了,倒计时就会重新开始
。所以我要控制下。

to gu1dai([异域苍穹]追夢人) 

你的方法在一个窗口打开文件的时候可以保证打开一个窗口,但是现在是多个窗口同时都有可能打开这个子窗口。并且不能确定那个窗口首先打开的。

现在要控制的是只要一个窗口打开了这个win1的窗口,其他窗口就不打开了。。。




#9


一个页面中打开win1后,设定cookie值
然后再另一个页面判断cookie值,决定是否打开

#10


在不同页面之间传递变量只能用Cookie了
function SetCookie(sName, sValue)
{
  document.cookie = sName + "=" + escape(sValue) + ";";
}

function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split(";");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}

在a.htm和b.htm中这样使用:
<script>
var c=GetCookie('win1');
if(c==null || c=='closed')
{
    window.open("page1.html","win1");
    SetCookie('win1','opened');
}

在打开窗口的page1.html页面中要加上onunload=winunload(),也就是关闭窗口时将cookie值设为closed:
function winunload()
{
    SetCookie(('win1','closed');
}
</script>

#11


对只要给window.open的第二个参数命名就可以了

#12


学习

#13


我也需要这个东西。在一个窗口file1.htm中打开win1后,如何在其他窗口(除file1.htm之外的其他窗口)中访问win1窗口?

#14


采用 okey668(okey668) 的方法,用cookie

#15


嘎嘎


to okey668(okey668) 

多谢,
准备结了