我有一个选择框,当选中某个项目时调用 window.open(url)
。火狐浏览器默认会在新标签页中打开该页面。但是,我希望该页面在新的窗口中打开,而不是在新标签页中。
如何实现这一点?
我有一个选择框,当选中某个项目时调用 window.open(url)
。火狐浏览器默认会在新标签页中打开该页面。但是,我希望该页面在新的窗口中打开,而不是在新标签页中。
如何实现这一点?
在 open
调用中指定窗口“特性”:
window.open(url, windowName, "height=200,width=200");
当您指定宽度/高度时,它将在新窗口中打开而不是在选项卡中打开。
请参见https://developer.mozilla.org/en-US/docs/Web/API/Window.open#Position_and_size_features获取所有可能的功能。
_blank
,否则它会在新标签页中打开。window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
对于特定的URL:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
。 - Ohad Schneiderlocation=0
。我还建议命名窗口而不是使用_blank
目标,这样如果用户多次单击打开弹出窗口的元素,则再次使用同一窗口,并且与focus()
链接,以便已经打开的弹出窗口获得焦点:window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
- OuzoPower我可能会错,但据我所知,这由用户的浏览器偏好设置控制,我不认为可以覆盖这些设置。
尝试:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
我有一些代码可以做你说的事情,但其中有很多参数。我认为这些是最基本的,如果不行,请告诉我,我会发布其余部分。
好的,在进行了许多测试后,这是我的结论:
当您执行:
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');
经过测试,似乎你使用的额外参数并不重要:不是你使用“这个参数”或“那个参数”会创建新的“真实窗口”,而是有新的参数。
但有些地方可能会让人困惑,这可能解释了很多错误的答案:
这个:
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');
不会产生相同的结果。
在第一种情况下,当您首次打开一个没有额外参数的页面时,它将在一个新的标签页中打开。在这种情况下,由于您所指定的名称,第二个调用也将在这个标签页中打开。
在第二种情况下,由于您的第一个调用是带有额外参数的,因此该页面将在一个新的“真实窗口”中打开。在这种情况下,即使第二个调用没有额外参数,它也将在这个新的“真实窗口”中打开...但是在同一个标签页中!
这意味着第一个调用很重要,因为它决定了页面放置的位置。
可能会用到以下代码:
<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>
popup.location = URL;
的目的是什么?window.open()
调用应该将其打开到正确的URL,在您的代码示例中,URL
未定义,因此它将退回到实验性(并不被广泛支持)的URL对象。 虽然在这里使用它是有争议的,但我很好奇它的使用动机是什么? - ken你不需要这样做。应该允许用户拥有他们想要的任何偏好。
Firefox默认这样做,因为在新窗口打开页面很烦人,如果用户不希望这样做,页面就不应该被允许这样做。(如果你设置了这种方式,Firefox允许你在新窗口中打开标签页)。
我刚刚在IE (11) 和 Chrome (54.0.2794.1 canary SyzyASan) 测试了这个:
window.open(url, "_blank", "x=y")
... 并且它在新窗口中打开。
这意味着Clint pachl说得对,只要提供任何一个参数就会导致新窗口打开。
- 而且显然它不必是合法的参数!
(YMMV-就像我说的那样,我只在两个地方测试过......下一次升级可能会使结果无效,无论如何)
预计时间:我刚刚注意到,在IE中,窗口没有装饰。
关键在于参数:
如果您提供参数[高度 =“”,宽度=“”],则会在新窗口中打开。
如果您不提供参数,则会在新标签中打开。
已在Chrome和Firefox中进行测试。
"location=0"
在第三个参数中。已经在最新的FF / Chrome和旧版本的IE11上进行了测试
我使用的完整方法调用如下(因为我喜欢使用可变宽度):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');