我在页面中有一个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。
非常感谢您对此解决方案的任何建议或替代方案。
答案 0 :(得分:0)
你不能。如果您从未直接响应用户操作(例如点击)的代码中调用window.open
,则可能会被浏览器的弹出窗口阻止程序阻止。解决方案是确保您直接响应用户操作来运行该代码。因此,例如,当您拥有来自服务器的URL时,在页面上显示一个div,其中包含链接,供用户自行打开。