让 target="_blank" 始终在同一窗口中打开(而不是父窗口)

4
我有一个表单,其中target = _blank设置正常工作,但我想让提交表单在同一窗口中打开,不管我做多少次提交。这有意义吗?例如:
当前行为是:
- “父窗口”具有表单 - 第一次提交时会打开第二个窗口,称为“Window Child 1”(到此为止都很好) - 当我提交表单第二次时,会加载另一个子窗口(我不想要这个)
我需要的行为是:
- 当我第二次提交表单时,我需要在第一次提交使用“Window Child 1”的同一窗口中获取内容。通过这样做,我希望在同一窗口上用第二个结果覆盖第一个提交的结果。
我在jsfiddle上做了这个http://jsfiddle.net/5jmnk1rm/
<form action="/" method="post" id="form1" target="_blank">   
    <input type="submit" value="Submit" />        
</form>

注意:由于其他代码等原因,我不应该使用window.open。

更新

我已将target="_blank"更改为target="customName",在Chrome移动版(iOS)中会打开不同的窗口。我开始认为这是浏览器上的一个bug。

2个回答

8
你只需要将_blank替换为具体名称即可。
<form action="/" method="post" id="form1" target="foo">   
    <input type="submit" value="Submit" />        
</form>

然而,您可能会遇到一些其他的问题,例如有些浏览器将打开新标签页而不是新窗口。

附加信息

如果您需要强制在新窗口中打开页面,无论用户的浏览器如何配置,您只能使用window.open。通过设置高度和宽度选项,您可以强制打开一个窗口而不是一个标签页。


我按照@Jeffrey A. Gochin在这个jsfiddle http://jsfiddle.net/5jmnk1rm/1/中所说的做了,但它并没有起作用。而且我不介意它在新标签页中打开,实际上这正是我在Chrome iOS中寻找的(避免打开许多标签页并只重复使用一个标签页)。 - Saymon
JSFiddle之外的工作正常吗?在这种情况下,可能是JSFiddle引起了问题。 - Jeffrey A. Gochin
试试这个 Plnkr。第一次点击后会打开一个新标签页,然后在新标签页或原始页面上进行的后续点击仍将指向新标签页。http://embed.plnkr.co/ogDgvuQgrjDmKhluTkU8/preview - Jeffrey A. Gochin
你的示例在桌面上运行良好,但在Chrome移动版中会打开多个选项卡。 - Saymon
你是什么意思,@Jeffrey A. Gochin?在哪里添加高度/宽度?(以防你是指弹出窗口“window.open”,我正试图执行一个简单的目标操作) - Saymon
我忘记了您不使用window.open的要求。那个要求的原因是什么? - Jeffrey A. Gochin

2

您需要为窗口提供一个名称。 _blank 是一个特殊情况,它将始终创建一个新窗口。如果您指定target="my-form"或其他名称,则会重用子窗口。


我按照你在@pmccloghrylaing提供的jsfiddle http://jsfiddle.net/5jmnk1rm/1/中的方法进行了操作,但是它并没有起作用。 - Saymon
请尝试使用HTML文件进行操作,而不是在JSFiddle中进行。 - pmccloghrylaing
是的,我尝试过了,它在Chrome移动版中打开了多个选项卡,而我想让它正常工作。 - Saymon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接