JavaScript window.open 被浏览器拦截

如果不是用户点击而打开的窗口都会被浏览器拦截,包括并不限于

用户点击》访问服务器》服务器返回然后打开新标签或新窗口。

今天就遇到上面的情况,在

button 事件里写的

window.open(),没问题,没有被拦截,但是后来因为业务原因需要修改为:

button事件之后先访问服务器然后返回url并打开新的窗口,这时候就出问题了,被浏览器拦截了。

解决办法:

// 首先打开新的空的窗口,等待被服务器重定向
var w = window.open('_blank');

// Ajax 请求服务器
Ajax.post('getUrl', {
	zsbh : id
}, function(data){
	// 根据服务器返回 重定向上面的新窗口
	w.location = data.url;
});

 

发表评论