浏览器 windows.open 弹窗被拦截的解决办法
<a href="javascript:;" onclick="dialog();">点击弹窗</a>
1. 使用同步请求
<script type="text/javascript">
function dialog(){
$.ajax({
url: 'url',
type: 'POST',
dataType: 'json',
async: false,
data: {param1: 'value1'},
success: function(data){
window.open("url");
}
})
}
</script>
2. 创建新窗口
<script type="text/javascript">
function dialog(){
var popup = window.open('about:blank', '_blank'); //先发起弹窗(因为是用户触发,所以不会被拦截)
$.ajax({
url: 'url',
type: 'POST',
dataType: 'json',
async: false,
data: {param1: 'value1'},
success: function(data){
popup.location = data.url; //再重定向页面链接
}
})
}
</script>