从没有弹出框的iframe javascript事件打开一个新选项卡

时间:2017-01-23 06:47:16

标签: javascript jquery iframe

我在页面中有一个iframe。

在iframe中成功向服务器发送数据后,服务器会响应下一个要打开的网址,我想在新标签或父窗口中打开下一个网址。

我面临的问题是,浏览器将其视为弹出窗口并阻止它。 在chrome中它被视为弹出窗口,在safari中它不会做任何事情。

iframe指向iframe(以REACT编写) 父网址为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。

非常感谢您对此解决方案的任何建议或替代方案。

1 个答案:

答案 0 :(得分:0)

你不能。如果您从未直接响应用户操作(例如点击)的代码中调用window.open,则可能会被浏览器的弹出窗口阻止程序阻止。解决方案是确保您直接响应用户操作来运行该代码。因此,例如,当您拥有来自服务器的URL时,在页面上显示一个div,其中包含链接,供用户自行打开。