2017-01-23 17 views
0

私はページにiframeを持っています。新しいタブを開くポップアップブロックを使用しないiframe javascriptイベントから

iframe内のサーバーにデータを正常に送信すると、サーバーは次のURLで応答します。新しいタブまたは親ウィンドウで次のURLを開きます。

問題私は直面しているのは、ブラウザがポップアップとして扱い、ブロックすることです。 クロムではポップアップとして扱われ、サファリでは何もしません。

iframeがiframe(REACTで書かれています)を指しています 親のURLはmain pageです。

エラーの原因となるコードの一部です。

  this.props.dispatch(actions.init_db(vals, (error,data)=>{ 
       this.setState({loading:false}) 
       if(error){ 
        this.setState({error:error}); 
       }else{ 
        url=data.next_url; 
        var win=window.open(url); 
        win.focus(); 
       } 
      })); 

actions.init_db()は、値をサーバーに書き込むajax関数を呼び出します。

サーバがエラーまたはデータで応答します。エラーがない場合、データには次のURLが含まれており、そのURLを開きます。

このソリューションのご提案または代替は高く評価されています。

答えて

0

できません。 window.openを、ユーザーの操作(クリックなど)に直接応答しないコードから呼び出すと、ブラウザのポップアップブロックによってブロックされる可能性があります。解決策は、ユーザーアクションに直接応答してコードを実行していることを確認することです。たとえば、サーバーからURLを取得した場合は、そのページにリンクがあるdivを表示して、ユーザーが自分自身を開くことができます。

関連する問題