2017-06-21 115 views
3

我有这样的片段:铬:window.open打开新标签而不是新的弹出窗口

HTML

<a href="#" class="option-link" data-url="https://www.google.com">CLICK ME</a> 

JS

var popup = undefined; 

// Option links toggle 
$('.option-link').on('click', function (e) { 

    e.preventDefault(); 

    var url = $(this).data('url'); 

    if (typeof url !== 'undefined' && url) { 

     function __popup_open(link) { 
      return window.open(
       link, 
       'same_window', 
       'width = 940, height = 620, toolbar = 0, menubar = 0, location = 1, status = 1, scrollbars = 0, resizable = 0, left = 0, top = 0' 
      ); 
     } 


     if (typeof popup == 'undefined' || popup.closed) { 

      popup = __popup_open(url); 

     } else { 

      popup.close(); 
      popup = __popup_open(url); 
     } 

     popup.focus(); 
    } 

}); 

运行在老的脚本v58版本(58.0.3029.110)向后版本的chrome会给出正确的行为来打开一个新的弹出窗口。

但是,当我将浏览器更新到v59(59.0.3071.104)后,它不打开弹出窗口,而是打开一个新的浏览器选项卡。

这是浏览器本身的问题吗?或者我的代码中的某些内容使得它不能工作,前提是这里唯一的变化是浏览器版本。

PS 试试这个片段mozilla工作正常。

回答

1

Chrome不再喜欢location=1用于打开弹出窗口。

更改为location=0location=no,你很好。

从规范 https://www.w3schools.com/jsref/met_win_open.asp

位置是只用在歌剧院。

+1

在推荐它之前,您是否尝试过?因为它在Chrome 63中不起作用。 – chb

相关问题