【问题标题】:Make that target="_blank" open always in the same window (not parent window)使 target="_blank" 始终在同一个窗口(不是父窗口)中打开
【发布时间】:2015-09-25 15:51:54
【问题描述】:

我有一个设置了 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) 中打开不同的窗口。我开始认为这是浏览器上的错误

【问题讨论】:

    标签: javascript html google-chrome mobile browser


    【解决方案1】:

    您需要做的就是将 _blank 替换为特定名称。

    <form action="/" method="post" id="form1" target="foo">   
        <input type="submit" value="Submit" />        
    </form>
    

    但是,您会遇到一些其他复杂情况,例如某些浏览器会打开一个新选项卡,而不是一个窗口。

    附加信息

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

    【讨论】:

    • 我做了你所说的@Jeffrey A. Gochin 在这个 jsfiddle jsfiddle.net/5jmnk1rm/1 但它不起作用。另外我不在乎它在新标签中打开,实际上这就是我在 Chrome iOS 中寻找的(以避免打开许多标签并仅重复使用一个标签)
    • 可以在 JSFiddle 之外工作吗?在这种情况下,JSFiddle 可能会导致问题。
    • 试试这个 plnkr。在您第一次单击新选项卡打开后,新选项卡或原始页面中的后续叮当声仍以新选项卡为目标。 embed.plnkr.co/ogDgvuQgrjDmKhluTkU8/preview
    • 您的示例在桌面上运行良好,但在 Chrome 移动设备中打开了多个标签
    • @Jeffrey A. Gochin 是什么意思?把高度/在哪里? (以防万一您指的是弹出窗口“window.open”,我正在尝试执行简单的目标操作)
    【解决方案2】:

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

    【讨论】:

    • 我做了你说的@pmccloghrylaing 在这个jsfiddle jsfiddle.net/5jmnk1rm/1 但它不起作用
    • 用 HTML 文件试试,而不是在 JSFiddle 中。
    • 是的,我试过了,它会在 Chrome 手机中打开多个标签页,我想让它在其中工作
    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2011-02-02
    • 2016-02-15
    • 2011-03-28
    • 2011-10-03
    • 2012-07-13
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多