如何在新选项卡(而不是新窗口)中打开链接? [复制]

Posted

技术标签:

【中文标题】如何在新选项卡(而不是新窗口)中打开链接? [复制]【英文标题】:How can I open a link in new tab (and not new window)? [duplicate] 【发布时间】:2011-09-11 20:47:54 【问题描述】:

我有一个“打开”按钮,用于“计算”应在新标签页中打开的链接。 我尝试使用:

window.open(url, '_blank');

但这会打开一个新窗口。

我也尝试了以下方法:

<form id="oform" name="oform" action="" method="post" target="_blank">
</form>

...

document.getElementById("oform").action = url;
document.getElementById("oform").submit();

仍然会打开一个新窗口,而不是一个新选项卡。

当使用简单的&lt;a href...&gt;target='blank' 时,链接会在新标签页中打开。

有解决办法吗?

【问题讨论】:

在 Chrome 中,&lt;form target="_blank"&gt; 在提交时会在新标签页中打开,因此取决于浏览器。 我使用 chrome,但它在新窗口而不是新标签中打开 【参考方案1】:

更新 [2019] 当您将目标设置为 _blank 时,当今大多数浏览器都会在新标签页中打开。弹出窗口的日子已经一去不复返了。我们现在可以使用:

 <a href="some url" target="_blank">content of the anchor</a>

大多数正常的浏览器都会在新标签页中打开新窗口。


CSS3 支持“在新标签页中打开”,通过属性target-new

target-new: window | tab | none;

更新 [2016]:正如其中一个 cmets 所示,此方法从未进入 CSS3 规范。这不应该被使用。但是,可以看出,大多数现代浏览器无论如何都会在新选项卡中打开target='_blank' 链接,除非此后立即尝试调整新选项卡的大小。但是,规范中似乎没有强制这种行为的机制。


[2011] 对于在新标签页中强制打开的方法,请尝试以下方法:

<a href="some url" target="_newtab">content of the anchor</a>

否则,使用this 方法立即调整窗口大小,以确保弹出窗口阻止程序不会杀死您的弹出窗口

【讨论】:

不知道如何使用它 @Erik 这些浏览器开始支持它还需要一段时间。目前,您所能做的就是更改 Firefox 中的 about:config 以强制执行该行为。 但有些网站是如何做到这一点的? 这应该在firefox中有效锚的内容 正如我在主信息中所说,当使用 时,它可以作为一种魅力,并且链接会在新标签页中打开。【参考方案2】:

除了提到的 CSS3 目标新选项 @anirudh4444 之外,您不能而且最重要的是可能不应该。您正在尝试控制用户的体验,而这很可能应该由用户决定。

【讨论】:

我知道一些网站点击“登录”按钮会打开一个新标签页 这样对吗? 许多浏览器会阻止弹出窗口。我希望在新标签页中打开链接,这样它就不会被阻止 我不确定这会阻止它被阻止。有一些弹出窗口阻止程序也可以阻止新标签的产生。你最好的选择(考虑到用户体验)是做一个灯箱/模态效果而不试图操纵物理浏览器窗口/标签集合。那只是我的两分钱。 如果您担心自己的窗口被“阻塞”,请不要担心。如果用户单击正常链接,浏览器不会阻止该窗口。如果您使用 javascript 打开这个新链接,那么您可能会遇到问题。【参考方案3】:

您可以使用以下任何一种,我在 6 种不同的浏览器中对它们进行了测试。 (Google Chrome、Mozilla Firefox、Microsoft Internet Explorer、Opera、K-meleon* 和 Seamonkey。)

    &lt;a href="blaah" target="_blank"&gt;Blaah&lt;/a&gt; &lt;a href="blaah" target="_tab"&gt;Blaah&lt;/a&gt; &lt;a href="blaah" target="_new"&gt;Blaah&lt;/a&gt;

它们的工作原理完全相同,选择完全取决于偏好。

*K-meleon,由于某种原因,我刚刚打开了我点击链接时所在的页面。

【讨论】:

见***.com/a/4964223/18192。尽管它们可能都有效,但建议使用 _blank 第一次单击此类链接时,它们可能都有效。但是第二次单击此类链接时,它可能会打开一个新选项卡,或者它可能会在上次使用的同一选项卡中打开该 URL。只有 target="_blank" 被定义为始终使用新选项卡(或窗口,如果您的浏览器配置为这种方式)。【参考方案4】:

我能够使用“表单”元素解决这个问题。

function openNewTab(link) 
     var frm = $('<form   method="get" action="' + link + '" target="_blank"></form>')
     $("body").append(frm);
     frm.submit().remove();

关于完整的实现和详细信息,请访问我的帖子http://mukesh.in/force-open-new-tab-in-browsers-instead-of-windows/

或者看到这个JSFiddle

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 第一个链接坏了【参考方案5】:

您的表单有 target="_blank"(包括前​​导下划线),而简单链接的 target='blank' 没有前导下划线。 “_blank”是指定特定操作的保留字,但“blank”是特定窗口的名称,可能是新窗口。这就是为什么你会得到不同的结果。两者都是弹出窗口,但类型不同。

每个用户都可以最终控制弹出窗口是打开新窗口还是打开新标签。你对此无能为力。

【讨论】:

【参考方案6】:

以下在 Chrome 中有效:

<script>
    function buildAndGo() 
        var aEl = document.getElementById('missingLink');
        aEl.href = "#" + resultOfSomeCalculation();

        var e = document.createEvent('MouseEvents');
        e.initEvent( 'click', true, true );

        aEl.dispatchEvent(e);
    
</script>
...
<button onclick="buildAndGo()">Do it</button>
<a href="#" id="missingLink" target="_blank" style="visibility: hidden;"></a>

从以下来源尝试使 IE 版本正常工作: Selenium BrowserBot, YUI User Action

【讨论】:

【参考方案7】:

如果是链接,则只有使用 target 标记才有效。

但如果是按钮,请尝试使用 onclick 功能而不是仅使用 _blank

改用 window.open(url, target) 函数 - 它接受一个 URL 和一个目标窗口名称,其行为与链接上的 target="something" 属性相同......就像这样

button(type="button", onclick="window.open('auth/google', '_blank');")

这应该可行。

【讨论】:

window.open(url, '_blank'); 正是 OP 所说的不起作用的代码。

以上是关于如何在新选项卡(而不是新窗口)中打开链接? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用“nofollow/赞助”时,window.open 在新窗口而不是新选项卡中打开

使用 JavaScript 打开链接新窗口(不是选项卡)而不输入两次 URL? [复制]

当用户选择“在新选项卡中打开”/“在新窗口中打开”而不是使用 html/javascript 点击时如何到达所需的页面

Javascript 在新选项卡(而不是窗口)中打开 URL

JavaScript 在新窗口中打开,而不是选项卡

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?