按窗口名称访问窗口

时间:2011-08-30 13:29:58

标签: javascript

如果我使用

打开一个窗口
window.open('myurl.html', 'windowname', 'width=100,height=100');

如何使用'windowname'引用新窗口(来自打开它的同一页面)?这个问题具体是关于这一点的。我知道我可以通过使用“var mywin = window.open(...)”保存对句柄的引用,但在这种情况下我并不关心。

谢谢, - 戴夫

7 个答案:

答案 0 :(得分:19)

如果您没有保存对窗口的引用,则无法恢复它。但是,如果该窗口仍处于打开状态,如果加载的页面与您的网页属于同一个域,则可以在其中运行JavaScript代码:

window.open("javascript:doSomething()", "windowname");

在你的场景中这是否足够取决于你想要实现的目标。

答案 1 :(得分:16)

在firefox中(也可能在其他浏览器中工作,但现在不是我的关注)我能够在多个页面加载时引用一个窗口

var w = window.open("", "nameofwindow");

如果它不存在,则打开新窗口,如果存在,则返回对现有窗口的引用而不更改窗口内容。

使用jQuery,我可以添加新内容,快速收集这样的有趣链接

$('body', w.document).append(link_tag);

答案 2 :(得分:5)

彼得是对的:

var w = window.open("", "nameofwindow");

适用于所有浏览器,我用它来检索以前由不同页面打开的窗口对象的引用。唯一的问题是页面的初始打开,如果弹出窗口不存在,您将获得一个带有空白页面的新窗口。

我尝试在其他文档的上下文中调用Javascript函数,以检查我是打开新窗口还是检索已经活动的页面。如果检查失败,我只是再次调用window.open来实际加载我的弹出内容:

var w = window.open("http://mydomain.com/myPopup", "nameofwindow");

希望有所帮助。

答案 3 :(得分:1)

这是不可能的。 windowName只能在target="..."个链接/表单中使用,或者在另一个window.open调用中再次使用相同的名称在该窗口中打开一个新的URL。

答案 4 :(得分:0)

尝试使用该名称打开该窗口,但URL再次为“”,以检查它是否为空白窗口。如果它是打开的,那么您将获得窗口;如果不是,则会打开一个新窗口,您需要关闭它。 在localStorage中添加子项将有助于防止打开新的空白窗口。

请检查我在https://github.com/goldentom66/ParentChildWindow中的代码

答案 5 :(得分:0)

对不起,我发布得晚了,但是如果您仍然打开另一个窗口,并且它们在同一域中,则可以在第一个窗口上运行:

function getReference(w) {
   console.log('Hello from', w);
}

在第二个窗口中:

window.opener.getReference(window);

答案 6 :(得分:-5)

afaik没有办法像windows['windowname']。 window.open()中指定的'windowname'可以作为<a target="windowname" [...] >

中的目标进行处理