在表单提交上获取对_blank目标窗口的引用

时间:2012-11-26 17:15:03

标签: javascript forms dom target

我有一个表单在提交时打开一个新窗口:

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

我想通过javascript,访问新创建的窗口,而无需手动为目标生成唯一名称,也无需借助打开窗口的替代方法

似乎必须有一种简单的方法来做到这一点,但我找不到能够在我的特定情况下工作的方法。

2 个答案:

答案 0 :(得分:4)

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

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

然后你可以通过以下方式在JS中使用它:

var newWindow = window.open(null, 'newName');

答案 1 :(得分:4)

我并非100%确定这适用于所有浏览器,但当window.openertarget上的<a>属性导致新版本时,Firefox似乎设置<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
}