【问题标题】:HTML: how to force links to open in a new tab, not new window [duplicate]HTML:如何强制链接在新选项卡而不是新窗口中打开[重复]
【发布时间】:2011-04-27 14:40:12
【问题描述】:

我使用target="_blank" 在新标签页中打开链接。但在 IE 中,它会打开一个新窗口,这是完全合乎逻辑的,因为这是 _blank 应该做的。

我不知道target="_blank" 在其他浏览器中的行为。

有什么东西可以强制链接在新标签页中打开。如果浏览器支持标签... 否则创建一个新窗口

【问题讨论】:

  • target="_blank" 将在 Firefox、Chrome 和 Opera 的新标签页中打开该链接。其他两个浏览器,IE 和 Safari 将在新窗口中打开它。
  • 哇,您甚至不能使用命名目标,也不能让 IE 在命名选项卡中打开新链接。也就是说,如果您选择使用target="myName" 在新选项卡中打开链接,则具有相同目标的后续链接将不会在您的选项卡中打开,而是会打开一个新窗口。对我来说听起来像是一个可用性错误。谢谢 IE。

标签: html cross-browser tabs


【解决方案1】:

作为浏览器呈现的 HTML 的作者,没有办法做到这一点。至少我所知道的还没有。它几乎取决于浏览器及其用户自己设置的设置/首选项。

此外,您不应该将这一点强加给任何用户。浏览器是用户的财产。如果用户想要在选项卡或新窗口中打开所有链接,那么就让用户去做吧。

我们不能做某些事情很好。 target=_blank 仍然被滥用,弹窗已经被做死了。

【讨论】:

  • +1!默认情况下,大多数浏览器在新选项卡中打开target = "_blank",但在过去,它会打开一个新窗口。我认为,没有办法强制链接在新标签页中打开。
  • 应该存在一个选项,用于定义应在新选项卡/窗口中打开哪些链接。这对于外部链接很方便。我相信每个人都同意在新选项卡中打开链接是大多数用户想要的方法。 IE 和 Safari 出于某种原因在新窗口中打开 _blank,但这可能是一种遗留行为,与用户的偏好无关。我相信大多数用户甚至都不知道如何在他们的浏览器中设置这种行为。
  • 简单的解决方案是不要试图强制您的链接在新标签新窗口中打开。如果我想要一个新标签,我会中键,谢谢。
  • 访问者决定何时离开您的网站,而不是您,因此您是否不想让他们离开也没关系。如果访问者不想离开,那么他们可以单击中键(正如@bobince 已经指出的那样)。如果他们离开并想回来,那么他们有一个后退按钮……和一个浏览器历史……和一个书签菜单……并且可能能够简单地再次找到该站点。
  • 您还忘记了在某些网站中,在同一选项卡中打开链接可能会很不方便。假设您正在查看一封电子邮件,并且您单击了一个链接,那么必须再次重新加载该邮件确实是一种矫枉过正的做法。 Gmail 确实会强制在新标签页中打开非本地链接。
【解决方案2】:

由于我遇到了这个老问题,然后发现现在有可能(也许当时这个 css 选项不可用),我只想添加一个关于如何完成的更新:

<a href="[yourlink]" target="_blank" style="target-new: tab;">Google</a>

以下是 target-new 样式的选项:

target-new: window | tab | none 

没有测试 none 选项,可能它使用了默认浏览器设置。

我在 Firefox 和 IE7-9 上确认了这一点。

【讨论】:

  • 我有 Safari 5.1.7。 (认为​​它是 Windows 的最新版本),这对我不起作用。也许它适用于 Safari 6+?谁能证实这一点?
  • 好吧,它没有很好的记录,我在 caniuse.com 上检查过,但没有信息,定义在这里:w3.org/TR/css3-hyperlinks/#the-target-new。 w3schools 声明它不受任何浏览器 (w3schools.com/cssref/css3_pr_target-new.asp) 的支持,但它至少可以在 Firefox 和 IE 上运行,因此很难找到信息......
  • 这个定义甚至是必要的,这太疯狂了。他们为什么不简单地为目标属性定义另一个值?
  • 也不适合我
【解决方案3】:

不,没有。

【讨论】:

  • 直言不讳,明确的答案 =) 我真的想将这个答案编辑为“否”
【解决方案4】:

希望对你有帮助

window.open(url,'_newtab');

【讨论】:

  • window.open 返回一个可以重用的 windowObjectReference(或者,第二个 arg 窗口名称可以在后续调用中重用,以在同一选项卡/窗口中加载不同的 url)。但是,这并不能回答问题 - window.open 没有提供强制选项卡或窗口的方法。
【解决方案5】:

我没有尝试过,但我认为它适用于所有浏览器:

target="_parent"

【讨论】:

  • 新标签高度依赖于用户设置和浏览器代理。 'Open Link In A New Tab' 不应该成为设计中任何地方的要求,这是去年学到的。
【解决方案6】:

浏览器处理新窗口和新标签的方式在浏览器的选项中设置,只能由用户更改。

【讨论】:

  • 用户偏好是一回事,但到目前为止我学到的是你需要让 PHP 为不同的浏览器设置不同的方法。
  • 真的吗?你是如何用 PHP 做到的?
【解决方案7】:
onclick="window.open(this.href,'_blank');return false;"

【讨论】:

    【解决方案8】:
    a {
        target-name: new;
        target-new: tab;
    }
    

    target-new 属性指定新的目标链接是在新窗口中打开还是在现有窗口的新选项卡中打开。

    注意:target-new 属性仅在 target-name 属性创建新选项卡或新窗口时有效。

    【讨论】:

    • 它适用于最新的 Firefox。
    • 在 CSS 中处理这个似乎很奇怪。我想能够通过 CSS 选择器应用它很好,但这似乎违背了传统的关注点分离。
    【解决方案9】:

    您可以更改 Safari 在 Safari > Preferences > Tabs > 'Open pages in tabs instead of windows' > 'Automatically' 中打开新页面的方式

    【讨论】:

      【解决方案10】:

      您可以设置 IE 在新标签页中打开链接,只需进入设置菜单即可。

      【讨论】:

        【解决方案11】:

        在 Internet Explorer 中,单击工具 -> Internet 选项。单击常规选项卡 -> 选项卡 -> 设置。选择“遇到弹出窗口时”-> 始终在新选项卡中打开弹出窗口选项。点击确定。

        【讨论】:

          【解决方案12】:

          有可能!

          这似乎覆盖了浏览器设置。希望它对你有用。

          <script type="text/javascript">
          // Popup window code
          function newPopup(url) {
              popupWindow = window.open(url,'popUpWindow1','height=600,width=600,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
          }
          </script>
          
          <body>
            <a href="JavaScript:newPopup('http://stimsonstopmotion.wordpress.com');">Try me</a>
          </body>
          

          【讨论】:

            【解决方案13】:

            简单地使用“target=_blank”将尊重用户/浏览器是否使用选项卡或新窗口的偏好,这在大多数情况下是“做正确的事”。

            如果您指定新窗口的尺寸,一些浏览器会将此作为需要特定尺寸的指标,在​​这种情况下将始终使用新窗口。 Stack overflow code example 堆栈溢出

            【讨论】:

              【解决方案14】:

              试试这样的javascript函数

              HTML:

              <a href="javascript:void(0)" onclick="open_win()">Target</a>
              

              Javascript:

              <script>
              function open_win() 
              {
              window.open("https://www.google.co.in/");
              }
              </script>
              

              【讨论】:

              • 非常感谢 - 将 href 设置为 javascript:
              猜你喜欢
              • 2011-09-11
              • 2017-07-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-06-13
              • 1970-01-01
              • 2013-03-11
              相关资源
              最近更新 更多