只有直接使用js调用 window.open(url)尤其是ajax请求回调或异步回调之后调用,打开新窗口时是会被拦截。常见解决方法:
1. 在超链接里加入onclick事件
<a href="javascript:void(0)" onclick="window.open(url)"></a>
2. 延迟打开
setTimeout('window.open(url)', 500)注意, 延迟时间不能太短 否则也会被拦截
3. 通过JS打开新窗口会被拦截,换一种实现方式
var newwindow=window.open('_blank')// 先打开页面
newwindow.location='http://www.xxxx.com'// 后更改页面地址
以下是js的点击触发事件,是用户触发,所以不会被拦截:
ele.onClick = function() {
window.open('http://xxx.com')
})
第一步:通过点击事件,打开新窗口,并且传递参数
state.href('content.checkFinalTrial')
window.open(url+'?id='+data.id+'&type=1')
}
注:点击后需要直接调用window.open(),如果在ajax获取成功后再打开窗口,那么浏览器会阻止新窗口打开
第二步:通过$location.search()获取通过新窗口url传递的参数,并且利用参数进行ajax请求获取数据
$location.search().id
$location.search().type
第三步:关闭新窗口,并且调用父窗口(指打开新窗口的前一窗口)的事件
window.close()
opener.$('.searchBut2').click()
//window.opener.location.reload(),刷新原网页