有时候在开发业务时,因为产品体验,要求自动打开新窗口,而不但愿用户手动点击。
直接在代码中执行:javascript
window.open('http://www.baidu.com')
html
是会被浏览器拦截的,浏览器是默认屏蔽弹出窗口,可是是用户手动触发,就不会拦截,若是是程序自动执行,则会拦截。java
那么根据上述规则,那就在用户有点击动做时打开这个窗口,伪代码以下:ajax
<a href="javascript:;" id="blank">test</a> document.getElementById('blank').onclick=function(){ window.open(...) }
示例在此编程
不过,这方式在异步编程中仍是会被拦截,因此在用户点击发送请求的同时打开一个新窗口,而后在回调函数中修改新窗口的地址,伪代码以下:浏览器
<a href="javascript:;" id="blank">test</a> document.getElementById('blank').onclick=function(){ const newwin = window.open('about:blank'); $.ajax({ type: 'post', url: 'xxxx', data: {...}, }).then((data)=>{ ... newwin.location.href = data.href; // 调用location })