-
问题现象
当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截。
-
原因
在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的。
-
处理
$('#jump-btn').on('click', function () {
// 打开一个空标签页(此处不会被拦截)
var newTarget = window.open();
$.ajax({
data: data,
success: function (url) {
// 修改新窗口的 url
newTarget.location.href = url;
}
})
});
总之,在用户交互时首先打开一个空标签页,随后在回调函数中更改 href 即可。
网友评论