我有一个表单在提交时打开一个新窗口:
<form id="form-id" target="_blank">
我想通过javascript访问新创建的窗口,而无需手动为目标生成唯一名称,也无需使用其他方法打开窗口.
似乎必须有一个简单的方法来做到这一点,但我找不到一个能在我的具体情况下工作的方法.
解决方法
我并不是100%确定这适用于所有浏览器,但是当< a>上的目标属性时,Firefox似乎设置了window.opener.或< form>导致打开一个新窗口.因此,您可以转向另一个方向并从新窗口中找到原始窗口(假设您在那里控制代码;如果没有,那么我无法想象您无论如何都可以对窗口引用做很多事情).
当然,新窗口中的代码可以做的一件事是在旧窗口中调用一个函数,传入自己的窗口引用.
因此,具体来说,如果你有:
<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 }