如何在新标签页(而不是新窗口)中打开链接?

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

window.open(url, '_blank');

但这打开了一扇新的窗户。

我还尝试了以下方法:

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


...


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

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

当对 target='blank'使用简单的 <a href...>时,链接将在新的选项卡中打开。

有解决办法吗?

64059 次浏览

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

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

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


CSS3通过属性 < a href = “ http://www.w3.org/TR/2004/WD-CSS3-hyperlinks-20040224/”rel = “ nofollow noReferrer”> target-new 支持“在新标签中打开”

target-new: window | tab | none;

更新[ 二零一六年] : 这个方法从未进入 CSS3规范,正如其中一条注释所指出的那样。这个不能用。然而,我们可以看到,大多数现代浏览器无论如何都会在一个新的选项卡中打开 target='_blank'链接,除非有人尝试在此之后立即调整新选项卡的大小。但是,在规范中似乎没有强制这种行为的机制。


[ 二零一一年]有一种方法强制打开一个新的标签页,这是很好的支持,尝试以下方法:

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

否则,使用 这个方法立即调整窗口大小,以确保弹出窗口阻塞器不会杀死您的弹出窗口

除了 CSS3的目标-新选项@anirudh4444提到的,你不能,最重要的是可能不应该。您正在尝试控制用户的体验,而什么时候最有可能由用户决定。

以下是在 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 用户行动

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

每个用户都可以最终决定弹出窗口是应该打开一个新窗口还是一个新的选项卡。你无能为力。

我能够用“形式”元素解决这个问题。

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

在链接的情况下,只有使用 目标标签才能工作。

但是在按钮的情况下,尝试使用 点击函数而不仅仅使用 空白

使用 window.open (URL,target)函数代替——它接受一个 URL 和一个目标窗口名,其行为与链接上的 target = “ something”属性相同... ... 如下所示

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

这个应该可以。

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

  1. <a href="blaah" target="_blank">Blaah</a>
  2. <a href="blaah" target="_tab">Blaah</a>
  3. <a href="blaah" target="_new">Blaah</a>

它们的工作原理完全一样,选择完全取决于个人喜好。

* K-meleon 出于某种原因我点击链接的时候打开了我的页面。