我有一个选择框,调用window.open(url)当一个项目被选中。默认情况下,Firefox将在新选项卡中打开页面。但是,我希望页面在一个新的窗口中打开,而不是一个新的选项卡。
我怎样才能做到呢?
我有一个选择框,调用window.open(url)当一个项目被选中。默认情况下,Firefox将在新选项卡中打开页面。但是,我希望页面在一个新的窗口中打开,而不是一个新的选项卡。
我怎样才能做到呢?
当前回答
我也有同样的问题,但我找到了一个相对简单的解决方法。
在JavaScript中,我检查了window。揭幕战! =零;来确定窗口是否弹出。如果你正在使用一些类似的检测代码来确定你的网站正在呈现的窗口是否是一个弹出窗口,你可以很容易地“关闭”它,当你想要打开一个“新”窗口使用新窗口JavaScript。
只要把它放在你的页面的顶部,你想永远是一个“新”窗口。
<script type="text/javascript">
window.opener=null;
</script>
我在我的网站的登录页面上使用这个,所以如果用户使用弹出窗口导航到我的网站,他们就不会弹出窗口。
您甚至可以创建一个简单的重定向页面来执行此操作,然后移动到您提供的URL。类似的,
父页上的JavaScript:
window.open("MyRedirect.html?URL="+URL, "_blank");
然后通过javascript,你可以得到URL并重定向到它。
重定向页面上的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>
其他回答
Try:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
我有一些代码,做什么你说,但有很多参数。我认为这些是最低限度的,如果它不起作用,请告诉我,我会张贴剩下的。
我刚刚尝试了IE(11)和Chrome(54.0.2794.1金丝雀SyzyASan):
window.open(url, "_blank", "x=y")
... 它打开了一个新的窗口。
这意味着Clint pachl说的是对的,他说提供任何一个参数都会导致新窗口打开。
——显然,它不必是一个合法的参数!
(YMMV -如我所说,我只在两个地方测试了它…下一次升级可能会使结果无效,无论如何)
我刚刚注意到,在IE中,窗口没有任何装饰。
为打开调用指定窗口“features”:
window.open(url, windowName, "height=200,width=200");
当您指定宽度/高度时,它将在一个新窗口中打开,而不是一个选项卡。
请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window.open#Position_and_size_features了解所有可能的功能。
我也有同样的问题,但我找到了一个相对简单的解决方法。
在JavaScript中,我检查了window。揭幕战! =零;来确定窗口是否弹出。如果你正在使用一些类似的检测代码来确定你的网站正在呈现的窗口是否是一个弹出窗口,你可以很容易地“关闭”它,当你想要打开一个“新”窗口使用新窗口JavaScript。
只要把它放在你的页面的顶部,你想永远是一个“新”窗口。
<script type="text/javascript">
window.opener=null;
</script>
我在我的网站的登录页面上使用这个,所以如果用户使用弹出窗口导航到我的网站,他们就不会弹出窗口。
您甚至可以创建一个简单的重定向页面来执行此操作,然后移动到您提供的URL。类似的,
父页上的JavaScript:
window.open("MyRedirect.html?URL="+URL, "_blank");
然后通过javascript,你可以得到URL并重定向到它。
重定向页面上的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>
好的,经过大量的测试,我的结论是:
表演时:
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');
不会得到相同的结果。
在第一种情况下,当您第一次打开一个没有额外参数的页面时,它将在一个新选项卡中打开。在这种情况下,第二个调用也将在这个选项卡中打开,因为您给出的名称。
在第二种情况下,由于您的第一次调用使用了额外的参数,页面将在一个新的“真实窗口”中打开。在这种情况下,即使第二次调用没有额外的参数,它也会在这个新的“真实窗口”中打开……但是同样的账单!
这意味着第一次调用很重要,因为它决定将页面放在哪里。