2011-04-26 91 views
0

我主页现有的窗口(称为“main.html中”),上面有一个链接,与我可以打开一个弹出式或集中弹出,如果已经存在:var test; if (test == null || test.closed) test = window.open('test.html','test','width=800,height=600,location=0'); else test.focus();使用在另一个选项卡

厂很好,但问题在于:如果用户在浏览器中多次打开主页面,请点击主#1中的链接,然后单击主#2中的链接,它使用现有的弹出窗口,但重新加载该站点,因为他不知道弹出窗口已经打开。

有没有办法,我可以告诉其他主窗口弹出的句柄,让他们可以使用它?

感谢您的咨询。

+0

是的。浏览器为了安全而阻止了一些功能,并且这是一种罕见的情况,用户必须处理这种奇怪的行为......;) – Vijay 2011-04-26 09:20:47

回答

0

如果两个“主窗口”是相互独立打开的,则他们无法访问彼此的变量。

但是,您可以去窗口“测试”与window.open参考,然后检查是否在“test.html中”设置一个变量的定义,以找出是否它已载入:

var test; 
if (!test || test.closed) { 
    test = window.open('','test','width=800,height=600,location=0'); 
    if (test && !test.someVariable) { 
    test.location.href = "test.html"; 
    } 
} else 
    test.focus(); 

顺便说一句,请注意,我改变了支票在第一,如果从test == null!test,因为变量将原本undefined,而不是null,使test == null将导致false

+0

谢谢,打开没有url的窗口,只在页面不显示时设置url没有装满工作。 – Wulf 2011-04-26 09:32:37

+0

一切都很好,但'test == null'会是'true' :) – Emmerman 2011-04-26 09:59:13

+0

@Emerder:对。我忘了使用'=='自动转换wenn。我通常使用'==='。 – RoToRa 2011-04-26 10:05:56

0

这将需要您能够访问所有其他选项卡中的主窗口,以检查它们中的任何一个是否已打开弹出窗口。据我所知,获取对窗口的引用的唯一方法是从函数window.open返回的引用。

不允许javascript访问其他窗口和选项卡,除了打开窗口/选项卡的窗口内部是由于安全性。想象一下,如果JavaScript可以通过所有的标签并运行功能。这将是一个相当大的安全风险。

相关问题