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

我有一个select框,当select一个项目时调用window.open(url) 。 Firefox将在默认情况下在新标签页中打开页面。 但是,我希望页面在新窗口中打开,而不是新的选项卡。

我怎样才能做到这一点?

给窗口一个“宽度/高度”的“规格”参数。 在这里查看所有可能的选项。

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

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

你不需要使用高度,只要确保你使用_blank ,没有它,它会打开一个新的选项卡。

对于一个空的窗口:

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

对于特定的url:

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

我可能是错的,但从我的理解,这是由用户的浏览器的偏好控制的,我不相信这可以被覆盖。

尝试:

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

我有一些代码可以完成你所说的事情,但是其中有很多参数。 我认为这些是最低限度的,让我知道如果它不起作用,我会发表其余的。

你不应该需要。 允许用户有他们想要的任何偏好。

Firefox在默认情况下是这样做的,因为在新窗口中打开一个页面是很烦人的,如果这不是用户所期望的,就不应该允许页面这样做。 (如果你这样设置,Firefox确实允许你在新窗口中打开标签页)。

您可以尝试以下function:

 <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> 

有趣的是,我发现如果为window.open的第三个属性传入一个string(而不是空string或属性列表),则会在Chrome,Firefox和IE的新选项卡中打开。 如果缺席,行为是不同的。

所以,这是我的新呼吁:

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

关键是参数:

如果您提供 Parameters [Height =“”,Width =“”],则它将在新窗口中打开。

如果您不提供参数,那么它将在新选项卡中打开。

在Chrome和Firefox中testing

好,经过大量的testing,在这里我的结论是:

当你执行:

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

或者无论你放在目的地字段,这将不会改变:新的页面将打开一个新的标签(所以取决于用户的喜好)

如果您想要在新的“真实”窗口中打开页面,则必须添加额外的参数。 喜欢:

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

经过testing,似乎你使用的额外的参数,不真的很重要:这不是你把“这个参数”或“这个另一个”,它创造了新的“真正的窗口”的事实,但事实是有新的参数)。

但有些东西是困惑的,可能会解释很多错误的答案:

这个:

  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'); 

将不会给出相同的结果。

在第一种情况下,当您第一次打开没有额外参数的页面时,它将在新标签中打开。 在这种情况下,由于您提供的名称,第二个电话也将在此选项卡中打开。

在第二种情况下,由于您的第一个调用是通过额外的参数进行的,页面将在新的“ 真实窗口 ”中打开 。 在这种情况下,即使第二个调用没有额外的参数,也会在这个新的“ 真正的窗口 ”中打开 …但是同样的标签!

这意味着第一个电话是重要的,因为它决定把页面放在哪里。

试试这个方法…..

 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; } 

在这里回答。 但是再次发布以供参考。

如果在实际的点击事件中没有发生, 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调用。

我认为它不是HTML目标属性的问题,但你没有选中“在标签”选项卡下的Firefox“选项”菜单下的“在新选项卡中打开新窗口”选项。 检查它,然后再试一次。

在这里输入图像描述

我有同样的问题,但find了一个相对简单的解决scheme。

在JavaScript中,我正在检查window.opener !=null; 以确定窗口是否popup。 如果您使用一些类似的检测代码来确定您的网站窗口是否被popup,您可以使用新的窗口JavaScript打开“新窗口时,轻松地将其closures

只要把它放在页面的顶部,你总是想成为一个“新的”窗口。

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

我在我的网站的login页面上使用这个,所以用户不会popup行为,如果他们使用popup窗口导航到我的网站。

你甚至可以创build一个简单的redirect页面,然后移动到你给它的URL。 就像是,

父页面上的JavaScript:

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

然后从这里使用一个小的JavaScript,你可以得到的URL和redirect到它。

redirect页面上的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> 

我只是试图与IE(11)和Chrome(54.0.2794.1金丝雀SyzyASan):

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

…并在新窗口中打开。

这意味着Clint pachl说得对,他提到任何一个参数都会导致新窗口打开。

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

(YMMV – 正如我所说的,我只在两个地方进行了testing……下一次升级可能会使结果无效)

ETA:但我注意到,在IE中,窗户没有装饰。

在Chrome 31.0.1650.63,Firefox 25.01,Safari 6.1.1和IE 9中进行testing:

 window.open(url, true, '_blank'); 

为什么它的作品,我不知道,但它确实。