2017-01-23 88 views
0

我有一个页面中的iframe。打开新选项卡从iframe javascript事件没有弹出块

我iframe中,成功地将数据发送到服务器后,服务器下一个URL响应打开,我想在一个新标签或父窗口打开下一个URL。

问题我面对的是,浏览器将其视为弹出窗口并将其封锁。 铬在它被视为弹出,在Safari浏览器它不会做任何事情。

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,并在其中包含链接,供用户自行打开。

相关问题