window.Openブラウザブロック解決

1683 ワード

需要
注文ページでは、注文成功情報を返した後、新しいラベルページを開いて支払いをジャンプする必要があります.
試す
 $.ajax({
     url:'xxx',
     success:function(url){
         window.open(url,'_blank');
     }
 })

問題が発生
ブラウザはセキュリティメカニズムにあり、ユーザーがトリガーしないウィンドウを開く操作はブロックされます.
解決する
非同期リクエストの前に、新しいウィンドウを開き、
 var newWin = window.open('about:blank', '_blank')

そして、リクエストが成功したときに、設定
newWin .location.href = url;

ソリッドコード
$btn.on('click',function(){
    var newWin = window.open('about:blank', '_blank');//         
    $.ajax({
     url:'xxx',
     success:function(url){
         newWin .location.href = url;
     }
 })
});

参照先:https://stackoverflow.com/questions/22007592/chrome-window-open-after-ajax-request-acts-like-popup