如何绕过浏览器的拦截
2019-02-21 本文已影响0人
liuchungui
最近做一个功能,需要在用户点击按钮之后,服务器处理一些事情后,给用户弹出一个窗口操作,但是Chrome毫不留情就把窗口拦截了。除非,用户主动给你开启允许弹窗的权限。但,往往用户并不知道怎么操作,那作为开发的我们如何绕过浏览器的拦截呢?
首先,经过查阅和分析,用户主动点击按钮弹出来的框会被拦截;而我们请求数据后或在定时器中写的弹框会被拦截。
基于上面,我们可以使用两种方式绕过浏览器的拦截。
第一种,当用户点击之后,立马打开一个新的空白页面窗口,然后请求数据,等操作完成后将数据灌入新的窗口,实现如下:
var btn = $('#btn');
btn.click(function () {
//打开一个不被拦截的新窗口
var newWindow = window.open();
$.ajax({
url: 'ooxx',
success: function (url) {
//修改新窗口的url
newWindow.location.href = url;
}
})
});
注:代码来源于 如何绕过chrome的弹窗拦截机制
这种方式的好处是直接打开了一个新的窗口,不过,要做的流畅,需要在新的空白页面下功夫。例如,在空白页面导入一个加载的动画,让用户耐心等待一下。
第二种,当处理完数据之后,弹出一个Alert,让用户点击,从而顺利进入想要的页面
这种方式实现起来比较简单,只是给用户多了一个点击的操作。
最后
最后,我们选择了第一种,能节省一步,就尽量为用户节省一步。