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

时间:2011-06-09 16:16:08

标签: javascript html

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

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...>target='blank'一起使用时,链接会在新标签中打开。

有解决方案吗?

7 个答案:

答案 0 :(得分:68)

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

target-new: window | tab | none;

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


[2011]有关在受支持良好的新标签中强制开启的方法,请尝试以下操作:

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

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

答案 1 :(得分:9)

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

答案 2 :(得分:6)

您可以使用以下任何一项,我在6种不同的浏览器中对它们进行了测试。 (谷歌浏览器,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>
  4. 它们都完全相同,选择完全取决于偏好。

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

以下适用于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 BrowserBotYUI User Action

答案 6 :(得分:-3)

如果是链接,则仅使用目标标记即可。

但是如果是按钮,请尝试使用 onclick 功能执行此操作,而不是仅使用 _blank

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

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

这应该有用。