通过窗口名称访问窗口

Access a window by window name

本文关键字:窗口 访问      更新时间:2023-09-26

如果使用

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

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

谢谢,Dave

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

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

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

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

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

如果您没有保存对窗口的引用,那么就没有办法恢复它。但是,如果窗口仍然打开,并且如果加载的页面与您的页面属于同一域,则可以在其中运行JavaScript代码:

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

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

彼得是正确的:

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

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

我尝试在另一个文档的上下文中调用Javascript函数,以检查我是否打开了一个新窗口或检索已经激活的页面。如果检查失败,我就调用window。再次打开以实际加载我的弹出内容:

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

希望对你有帮助。

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

尝试打开该窗口的名称,但URL是"再次,检查它是否是一个空白窗口。如果它是开着的,那么你会得到窗户;如果没有,则会打开一个新窗口,您需要将其关闭。在localStorage中添加子节点将有助于防止打开新的空白窗口。

请查看我的代码https://github.com/goldentom66/ParentChildWindow

对不起,我发布晚了,但如果你仍然有其他窗口打开,他们在同一域,你可以运行,在第一个窗口:

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

第二个窗口:

window.opener.getReference(window);

恐怕没有办法像windows['windowname']那样。在window.open()中分配的'windowname'可以作为<a target="windowname" [...] >

中的目标进行寻址。