2017-06-21 147 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

相關問題