在写后台动态传前台资源链接的时候,需要用到,返回后直接在新窗口打开。开发使用的谷歌浏览器,使用window.open(),测试的时候,发现总是被拦截,这这里记录下解决的方法。
找了写资料,说是当非用户触发的window.open()方法时,由于谷歌的安全机制,通常是会被拦截的,除非人工取消拦截。比如下面两个例子:当用户没有直接发出window.open()请求的时候,不是直接调用,而是在回调函数里调用,则会被拦截。
//不会被拦截
$('#btn').click(function () {
window.open(url)
});
$('#btn').click(function () {
$.ajax({
url: 'a/aa',
success: function (url) {
//会被拦截
window.open(url);
}
})
});
解决方法:先在回调函数之前打开新窗口,后再加载url
$('#btn').click(function () {
//打开一个不被拦截的新窗口
var newWindow = window.open();
$.ajax({
url: 'a/aa',
success: function (url) {
//修改新窗口的url
newWindow.location.href = url;
}
})
});
欢迎指导!
千而の大狮子!