JavaScript在新窗口中打开,而不是标签

时间:2009-04-07 17:23:58

标签: javascript firefox

我选择了一个项目时会调用window.open(url)。 Firefox默认会在新标签页中打开该页面。但是,我希望页面在新窗口中打开,而不是新选项卡。

我该如何做到这一点?

15 个答案:

答案 0 :(得分:438)

为窗口指定宽度/高度的'specs'参数。有关所有可能的选项,请参阅here

window.open(url, windowName, "height=200,width=200");

指定宽度/高度时,它将在新窗口而不是标签中打开它。

答案 1 :(得分:104)

您不需要使用高度,只需确保使用_blank,如果没有它,则会在新标签页中打开。

对于空窗口:

window.open('', '_blank', 'toolbar=0,location=0,menubar=0');

对于特定网址:

window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');

答案 2 :(得分:81)

我可能错了,但据我所知,这是由用户的浏览器偏好控制的,我不相信这可以被覆盖。

答案 3 :(得分:15)

尝试:

window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");

我有一些代码可以满足您的要求,但其中有很多参数。我认为这些是最低限度的,让我知道如果它不起作用,我会发布其余的。

答案 4 :(得分:10)

您可以尝试以下功能:

<script type="text/javascript">
function open(url)
{
  var popup = window.open(url, "_blank", "width=200, height=200") ;
  popup.location = URL;
}
</script>

执行的HTML代码:

<a href="#" onclick="open('http://www.google.com')">google search</a>

答案 5 :(得分:9)

你不应该这样做。允许用户拥有他们想要的任何偏好。

Firefox默认情况下这样做是因为在新窗口中打开页面很烦人,如果不是用户所希望的话,绝不允许页面这样做。 (如果按这种方式设置,Firefox允许您在新窗口中打开选项卡。)

答案 6 :(得分:7)

好的,经过大量的测试,这是我的结论:

执行时:

     window.open('www.yourdomain.tld','_blank');
     window.open('www.yourdomain.tld','myWindow');

或者您在目标字段中放置的任何内容,这将不会改变任何内容:新页面将在新选项卡中打开(因此取决于用户偏好)

如果您希望在新的&#34;真实&#34;中打开页面。窗口,你必须加上额外的参数。像:

window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');

经过测试,它似乎是您使用的额外参数,不要&#39;真的很重要:这不是你提出的事实&#34;这个参数&#34;或者&#34;另一个&#34;它创造了新的真实窗口&#34;但事实上有新的参数。

但有些事情很困惑,可能会解释很多错误的答案:

此:

 win1 = window.open('myurl1', 'ID_WIN');
 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');

而且:

 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
 win1 = window.open('myurl1', 'ID_WIN');

不会给出相同的结果。

在第一种情况下,当您首次打开不带额外参数的页面时,它将在新的标签中打开。在这种情况下,由于您提供的名称,第二次通话也会在此标签中打开。

在第二种情况下,当您第一次拨打 额外参数时,该页面将在新的&#34; 真实窗口&#34;中打开。在这种情况下,即使第二次调用是在没有额外参数的情况下进行的,它也会在这个新的&#34; 真实窗口&#34; ...但同样的标签中打开!< / p>

这意味着第一次通话很重要,因为它决定了放置页面的位置。

答案 7 :(得分:5)

有趣的是,我发现如果你为window.open的第三个属性传入字符串(而不是空字符串或属性列表),它会在适用于Chrome,Firefox和IE的新标签页。如果缺席,行为就不同了。

所以,这是我的新电话:

 window.open(url, windowName, '');

答案 8 :(得分:5)

关键是参数:

如果提供参数[Height =“”,Width =“”],则会在新窗口中打开。

如果不提供参数,则会在新标签页中打开。

在Chrome和Firefox中测试

答案 9 :(得分:4)

尝试那种方法.....

function popitup(url) {
       //alert(url);
       newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
       newwindow.moveTo(350,150);
   if (window.focus) 
          {
             newwindow.focus()
          }
   return false;
  }

答案 10 :(得分:2)

我刚尝试使用IE(11)和Chrome(54.0.2794.1 canary SyzyASan):

window.open(url, "_blank", "x=y")

...它在新窗口中打开。

这意味着当Clint pachl说提供任何一个参数将导致新窗口打开时{{3}}说得对。

- 显然它不一定是合法的参数!

(YMMV - 正如我所说,我只是在两个地方进行了测试......下一次升级可能会使结果失效,无论如何)

ETA:我注意到,虽然 - 在IE中,窗口没有装饰。

答案 11 :(得分:1)

我认为它不是html目标属性问题,但是您在firefox“options”菜单下的“tab”选项卡中取消选中“在新选项卡中打开nw windows”选项。检查一下,然后再试一次。

enter image description here

答案 12 :(得分:0)

回答here。但再次发布以供参考。

如果实际点击事件没有发生,

window.open()将无法在新标签中打开。在给定的示例中,url正在实际点击事件中打开。如果用户在浏览器中有适当的设置,这将有效。

<a class="link">Link</a>
<script  type="text/javascript">
     $("a.link").on("click",function(){
         window.open('www.yourdomain.com','_blank');
     });
</script>

同样,如果您尝试在click函数中执行ajax调用并希望在成功时打开一个窗口,请确保您在设置async : false选项的情况下执行ajax调用。

答案 13 :(得分:0)

我有同样的问题,但找到了一个相对简单的解决方案。

在JavaScript中,我检查window.opener !=null;以确定窗口是否弹出。如果您正在使用某些类似的检测代码来确定您正在呈现的网站是否是弹出窗口,那么当您想要打开时,您可以轻松“将其关闭”使用新的Windows JavaScript的“新”窗口。

只需将其放在页面顶部,您就可以始终成为“新”窗口。

<script type="text/javascript">
    window.opener=null;
</script>

我在我网站的登录页面上使用它,因此如果用户使用弹出窗口导航到我的网站,则不会出现弹出行为。

您甚至可以创建一个简单的重定向页面来执行此操作,然后移动到您提供的URL。像,

父网页上的JavaScript:

window.open("MyRedirect.html?URL="+URL, "_blank");

然后通过使用here中的一些小javascript,您可以获取网址并重定向到该网址。

重定向页面上的JavaScript:

 <script type="text/javascript">
        window.opener=null;

    function getSearchParameters() {
          var prmstr = window.location.search.substr(1);
          return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
    }

    function transformToAssocArray( prmstr ) {
        var params = {};
        var prmarr = prmstr.split("&");
        for ( var i = 0; i < prmarr.length; i++) {
            var tmparr = prmarr[i].split("=");
            params[tmparr[0]] = tmparr[1];
        }
        return params;
    }

    var params = getSearchParameters();
    window.location = params.URL;
    </script>

答案 14 :(得分:0)

对我来说,解决办法是

a
第三个参数中的

。在最新的FF / Chrome和旧版本的IE11上进行了测试

下面是我使用的完整方法调用(因为我喜欢使用可变宽度):

serve