我有一个选择框,调用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>

其他回答

对我来说,解决办法就是

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

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

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

你不需要这么做。允许用户拥有他们想要的任何首选项。

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

我刚刚尝试了IE(11)和Chrome(54.0.2794.1金丝雀SyzyASan):

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

... 它打开了一个新的窗口。

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

——显然,它不必是一个合法的参数!

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

我刚刚注意到,在IE中,窗口没有任何装饰。

有趣的是,我发现如果您为window的第三个属性传递一个空字符串(而不是空字符串或属性列表)。打开,它将在Chrome, Firefox和IE的新选项卡中打开。如果缺席,行为就不同了。

这是我的新号召:

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