调用 window.open
同步和异步指的是:
- 在点击界面(任意位置)的同时执行 window.open 就是同步方式;
- 点击界面,执行一个ajax请求或者setTimeout后才执行 window.open 就是异步方式。
异步打开窗口,会被浏览器阻止。
解决方法
1、先以同步方式调用 window.open
打开一个空窗口,得到新窗口的引用,也就是句柄 handle;
2、在 ajax 或 setTimeout 后,通过 handle.location = '新的url'
改变其 url 即可。
var wyWindow = window.open('about:blank', '_blank');
$.post(baseUrl + '/Ajax.ashx', {
userId: id,
success: function (data) {
wyWindow.location = 'http://www.baidu.com';
}
});