如何在JavaScript中打开新的窗口而非标签页?

404

我有一个选择框,当选中某个项目时调用 window.open(url)。火狐浏览器默认会在新标签页中打开该页面。但是,我希望该页面在新的窗口中打开,而不是在新标签页中。

如何实现这一点?


3
请输入需要翻译的英文文本。 - Michael Freidgeim
1
可能是使用JavaScript在新标签页中打开URL的重复问题。 - user456814
你可以使用 https://github.com/reduardo7/xpopup。 - Eduardo Cuomo
15个回答

5

有趣的是,我发现如果在window.open的第三个属性中传入一个字符串(而不是null字符串或属性列表),则它会在Chrome、Firefox和IE中打开一个新标签页。如果缺失,则行为会有所不同。

因此,这是我的新调用:

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

原帖的作者不是试图在新窗口中打开弹出窗口吗?此外,在IE 11中,您提供的代码片段将根据用户的浏览器首选项打开一个新窗口或选项卡。 - user456814

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

1

已在此处回答。但为了参考而再次发布。

window.open()如果不是在实际的点击事件上发生,将不会在新标签页中打开。在给出的示例中,URL是在实际的点击事件上打开的。只要用户在浏览器中设置适当,这将起作用。

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

同样地,如果您正在尝试在单击函数内进行ajax调用并希望在成功时打开窗口,请确保使用设置为async: false的选项进行ajax调用。


1
我曾经也有同样的问题,但找到了一个相对简单的解决方案。
在JavaScript中,我检查window.opener != null;以确定窗口是否为弹出窗口。如果您正在使用类似的检测代码来确定您网站所呈现的窗口是否为弹出窗口,则可以在使用新窗口的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>

1

我认为这不是HTML目标属性的问题,而是您在Firefox“选项”菜单下的“选项”选项卡中取消了“在新标签页中打开nw窗口”的选项。请检查它并重试。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接