我怎样才能打开新标签(而不是新窗口)的链接?

我有一个“打开”button,用于“计算”应该在新选项卡中打开的链接。 我尝试使用:

window.open(url, '_blank'); 

但是,这打开了一个新的窗口。

我也尝试了以下方法:

 <form id="oform" name="oform" action="" method="post" target="_blank"> </form> ... document.getElementById("oform").action = url; document.getElementById("oform").submit(); 

不过,打开一个新窗口,而不是一个新的标签。

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

有解决scheme吗?

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

 target-new: window | tab | none; 

更新[2016]:这个方法从来没有把它变成CSS3规范,正如注释之一所示。 这不应该使用。 然而,可以看出,大多数现代浏览器无论如何都会在新选项卡中打开target='_blank'链接,除非尝试立即调整新选项卡的大小。 然而,在规范中似乎没有强制这种行为的机制。


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

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

否则,请使用此方法立即调整窗口大小,以确保popup式窗口拦截器不会中止popup窗口

除了提到的CSS3 target-new选项@ anirudh4444之外,你不能也不可能这么做。 您正试图控制用户的体验,而这应该最有可能留给用户。

你可以使用以下任何一种,我在6种不同的浏览器中testing了它们。 (Google Chrome,Mozilla Firefox,Microsoft 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>

他们的工作完全一样,select完全取决于偏好。

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

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

 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

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 =“_ blank”(包括一个前导下划线),而你的简单链接的目标='blank'没有前导下划线。 “_blank”是指定特定动作的保留字,但“blank”是特定窗口(可能是新窗口)的名称。 这就是为什么你得到不同的结果。 这两个都是popup窗口,但不同的types。

每个用户对popup窗口是否应打开一个新窗口或新选项卡有最终的控制权。 没有什么可以做的。

在链接的情况下是只使用目标标签将工作。

但是在button的情况下尝试使用onclick函数而不是仅使用_blank

使用window.open(url,target)函数 – 它需要一个URL和一个目标窗口名称,它的行为与链接上的target =“something”属性相同。

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

这应该工作。