• 前端分享学习博客,探究前端相关技术,推动天朝前端发展,有任何问题都可以留言一起探究
  • 由于站内自链接问题,部分pre中的代码首字母使用大写以过滤筛选
  • 欢迎友链互换,还有,如果有大神请不要黑我的站点(o´・ェ・`o)
  • 如果你觉得博客还不错,请Ctrl+D收藏( *︾▽︾)

浏览器弹窗禁用问题

Frame/Browser 薛 陈磊 123次浏览 0个评论 扫描二维码

项目中遇到的小问题,记录一下。

以前没留意过弹窗问题(不是alert,是window.open打开新网页),一般的操作是事件之后直接触发弹窗,比如按钮点击后弹,都是没有问题的。项目中有个需要确认请求(Vue.js+axios,axios默认异步)结果后才能确定是否弹窗,或者是弹窗到某个页面,而结果是弹窗屡屡被浏览器拦截禁止,不明所以,后来经过本地操作验证,对比才想到是否是同异步的问题,以基础的请求作实验;

以JQ中的ajax中为例,ajax中默认是异步的,当然里面有个参数可以设置为同步,也就是async参数,如下示例:

$.ajax({  
    url:"http://www.easy-mock.com/mock/5a12901c46ed8d690fdd9b53/example/query",    //请求的url地址  
    dataType:"json",   //返回格式为json  
    async:true,//请求是否异步,默认为异步  
    data:{"id":"value"},    //参数值  
    type:"GET",   //请求方式 get 或者post  
    beforeSend:function(){  
        //请求前的处理  
    },  
    success:function(req){  
        //请求成功时处理  
    },  
    complete:function(){  
        //请求完成的处理  
    },  
    error:function(){  
        //请求出错处理  
    }  
});

实例中将async值改为false就可以了,其他请求插件根据实际情况更改,Chrome也对这个事情做出了说明:

浏览器弹窗禁用问题

https://support.google.com/chrome/answer/95472?co=GENIE.Platform%3DDesktop&hl=en&oco=1

或者直接到浏览器设置中设定:chrome://settings/content/popups,这里以Chrome为例子,注意其他浏览器有异同;

也就是浏览器会禁止自动弹窗的行为,异步过程中获取结果的过程,浏览器无法判定是否是用户意愿行为吧,可以看做是浏览器保护用户或者维护浏览器的一种策略吧,因为自动弹窗往往会被非法用到弹广告弹游戏等途径上,跟浏览器同源策略是一样的;

 

 


薛陈磊的博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明浏览器弹窗禁用问题
喜欢 (1)
[905044086@qq.com]
分享 (0)
作者薛陈磊
关于作者:
非著名前端Coder,中二非文艺闷骚少年,喜欢动漫、历史、暗荣三国志和游山玩水,关注互联网发展,期待遇到更多小伙伴一起吹水玩耍;
说点什么...
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址