按窗口名称访问窗口

Dav*_*ave 31 javascript

如果我打开一个窗口使用

window.open('myurl.html', 'windowname', 'width=100,height=100');
Run Code Online (Sandbox Code Playgroud)

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

谢谢, - 戴夫

Wla*_*ant 19

如果您没有保存对窗口的引用,则无法恢复它.但是,如果该窗口仍处于打开状态并且如果页面加载有属于相同的域名页面,您可以运行在它的JavaScript代码:

window.open("javascript:doSomething()", "windowname");
Run Code Online (Sandbox Code Playgroud)

在您的场景中,这是否足够取决于您要实现的目标.

  • @ThiefMaster:通常问题是打开窗口导航到不同的页面,因此保持参考是不可能的.不过,我同意 - 这不是一个很好的解决方案. (7认同)
  • 啊。即使那有效..我希望没有人真正使用它。但我想知道像 `window.open("javascript:void(window.opener.windowname = window);", "windowname")` 这样的东西是否会起作用......实际上应该使用这样的黑客) (2认同)

小智 17

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

var w = window.open("", "nameofwindow");
Run Code Online (Sandbox Code Playgroud)

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

通过jQuery,我可以添加新内容,快速收集这样的interresting链接

$('body', w.document).append(link_tag);
Run Code Online (Sandbox Code Playgroud)


小智 6

彼得是正确的:

var w = window.open("", "nameofwindow");
Run Code Online (Sandbox Code Playgroud)

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

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

var w = window.open("http://mydomain.com/myPopup", "nameofwindow");
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助。


HBu*_*itz -7

据我所知,没有办法像windows['windowname']。window.open() 中分配的“windowname”可以作为目标进行寻址<a target="windowname" [...] >