如何检查javascript不要用window.open函数打开同一个窗口

时间:2010-04-23 20:38:10

标签: javascript

在我的javascript中,我想用这种方法在新窗口中打开URL:

var win = window.open(url...);

我如何检查这一点,而不是打开同一个窗口并丢失所有输入的数据。 例如,如果我在新窗口中打开“www.musite.com/addproduct”URL,输入数据,请离开我的工作地点。然后我再次点击打开窗口,打开新窗口,我丢失了所有数据。

2 个答案:

答案 0 :(得分:2)

以下内容仅允许您打开一次窗口:

if (typeof win !== 'object') {
   win = window.open('http://www.google.com');
}
else {
   // Do nothing
}

作为Sani suggested in another answer,跟踪窗口关闭的时间是明智的,以便能够重新打开它。您可以在弹出窗口中侦听window.onunload事件,如下所示:

window.onunload = function() {
   window.opener.win = undefined;
}

onunload事件处理程序会将打开弹出窗口的窗口的win全局变量设置为undefined,这样您就可以重新打开窗口了。

请注意,由于same origin policy,这仅在您打开的弹出窗口与父窗口位于同一域中时才有效。另外请注意,我只在Firefox中测试了上述内容。

答案 1 :(得分:0)

如果成功则window.open函数返回窗口的referens,如果不成功则返回null。
您应该检查win是否为空:

if (win != null) {
  // It is now safe to open the window.
}

您还需要在关闭窗口时将win设置为null,以便您知道可以再次打开它。