7

I have a form that is opening a new window on submit:

<form id="form-id" target="_blank">

I want to access the newly created window via javascript, without manually generating a unique name for target, and without resorting to an alternative method for opening the window.

It seems like there has to be an easy way of doing this but I wasn't able to find one that will work in my specific situation.

4

2 回答 2

5

而不是_blank这样,您可以使用命名您的新窗口。

 <form id="form-id" target="newName">

然后你可以在 JS 中使用它:

var newWindow = window.open(null, 'newName');
于 2012-11-26T17:17:16.553 回答
4

我不是 100% 确定这适用于所有浏览器,但 Firefox 似乎设置window.opener了一个target属性<a><form>导致一个新窗口打开。因此,您可以从另一个方向找到原始窗口(假设您控制那里的代码;如果不是,那么我无法想象您可以对窗口引用做很多事情)。

当然,新窗口中的代码可以做的一件事是在旧窗口中调用一个函数,并传入它自己的window引用。

因此,具体来说,如果您有:

<form action=whatever target=_blank>

在原始页面上,然后在新打开的窗口中结束的页面可以这样做:

<head>
  <script>
    if (window.opener) {
      window.opener.announceWindow( window );
    }
  </script>

假设announceWindow()是原始页面上的一个函数,可能类似于:

function announceWindow( win ) {
  // do stuff with "win", a newly-opened window
}
于 2012-11-26T18:38:30.610 回答