摘要:直接在代码中执行是会被浏览器拦截的,浏览器是默认屏蔽弹出窗口,但是是用户手动触发,就不会拦截,如果是程序自动执行,则会拦截。
问题
有时候在开发业务时,由于产品体验,要求自动打开新窗口,而不希望用户手动点击。
直接在代码中执行:
window.open("http://www.baidu.com")
是会被浏览器拦截的,浏览器是默认屏蔽弹出窗口,但是是用户手动触发,就不会拦截,如果是程序自动执行,则会拦截。
解决那么根据上述规则,那就在用户有点击动作时打开这个窗口,伪代码如下:
test document.getElementById("blank").onclick=function(){ window.open(...) }
示例在此
不过,这方式在异步编程中还是会被拦截,所以在用户点击发送请求的同时打开一个新窗口,然后在回调函数中修改新窗口的地址,伪代码如下:
test 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 })
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83449.html
摘要:原因分析深入研究当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。但是,被浏览器拦截我们代码中要弹出的窗口并不是程序员所希望的。 现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简...
摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...
摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...
摘要:使用包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。我们会遇到想要弹出一个窗口,可是却是在事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免先用打开一个窗口,然后修改地址。 最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百...
阅读 1343·2023-04-25 23:42
阅读 2815·2021-11-19 09:40
阅读 3522·2021-10-19 11:44
阅读 3539·2021-10-14 09:42
阅读 1861·2021-10-13 09:39
阅读 3823·2021-09-22 15:43
阅读 667·2019-08-30 15:54
阅读 1448·2019-08-26 13:32