在我的javascript中,我想用这种方法在新窗口中打开URL:
var win = window.open(url...);
我如何检查这一点,而不是打开同一个窗口并丢失所有输入的数据。 例如,如果我在新窗口中打开“www.musite.com/addproduct”URL,输入数据,请离开我的工作地点。然后我再次点击打开窗口,打开新窗口,我丢失了所有数据。
答案 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,以便您知道可以再次打开它。