2014-01-20 85 views
1

是否可以通过窗口名称检测javascript是否存在于JavaScript中?检测窗口是否存在名称

我的情况是这样的:

我打开一个弹出窗口,或者一个新的浏览器选项卡。

然后我刷新打开popup/new标签的窗口。

所以我的代码再次运行在开窗器,所以我不能保存对打开的弹出/选项卡的引用。

我可以使用cookie,但我需要删除cookie时,我关闭弹出/选项卡,我不认为有一种方法来检测到这一点,弹出/选项卡已关闭(跨浏览器,当然,和ios! )

如果我可以保存一个弹出/选项卡窗口名称引用,那么我可以检查在开窗器弹出/选项卡我已打开仍然存在?

谢谢!

回答

0

您应该可以保留对刚刚打开的窗口的引用。

实施例从MDN:

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 

即制品在重新打开相同的窗口等一些附加信息;

编辑:从MDN文章上面链接:

如果名为strWindowName窗口已经存在,则strUrl被 加载到现有的窗口。在这种情况下, 方法的返回值是现有窗口,并且忽略strWindowFeatures。 为strUrl提供一个空字符串是一种在不更改窗口位置的情况下通过其名称获取对打开窗口的引用的方法。至 在每次调用window.open()时都会打开一个新窗口,对strWindowName使用值_blank的特殊 。

所以这样的事情应该工作:

var whandle = 'persistantWindow'; 
var w1 = window.open('http://yoururl.org/page1.html', whandle);  // <- open a window with a name 
var w2 = window.open('http://yoururl.org/page2.html', whandle);  // <- by re-using the same name, the new url will be opened in the same window 
+0

好吧,我说,如果我刷新打开弹出/新标签窗口。然后我再也没有那个参考。 – Toniq

+0

查看更新。从同一篇MDN文章中,它说你可以将一个窗口名称变量传递给'window.open'命令。通过使用相同的窗口名称,您可以将新的URL传递到窗口,并将在同一个窗口/标签页中打开。 – jasonscript

+0

我不确定我是否不明白您想说什么,或者您不明白我想要做什么。如果弹出窗口已经打开,我不想在父窗口中运行该代码。换句话说,假设我的应用程序在代码运行时在父窗口中创建了一个div。然后我打开popup并在弹出窗口中创建相同的div,并从父窗口中删除div。现在打开弹出窗口。现在有人刷新父窗口,并且该窗口本身将再次创建div。如果弹出窗口被打开,我不想在父窗口中创建一个div! – Toniq