主流的浏览器,默认都开启了广告过滤,这对于用户(浏览者)来讲,不但加快了访问网页的速度,并且也避免了勿点一些垃圾色情的东西,能够说绿色了网络环境。javascript
第1、对于正常的广告拦截前端开发须要注意的是:前端
在请求图片与js文件、接口、文件内容最好不要包含ad、guanggao等关键词,可能被拦截java
咱们能够用一个请求来判断浏览器有没有开启广告拦截,若是咱们须要插入广告,能够提示用户关闭广告拦截ajax
<script src="http://demo.jb51.net/adview_pic_cpc_cpm_cpa_guanggao_gg_ads_300x250.js" type="text/javascript"></script>
/*这个js文件的内容为var killads = true;*/
<script type="text/javascript"> if (typeof(killads)=='undefined'){alert('广告被过滤');} </script>
第2、浏览器对window.opne()的拦截,咱们能够经过var x =window.open(url);而后判断x == undefined来判断新窗口是否被拦截。浏览器
(一)、 通常状况下,若是在js中调用window.open()函数去打开一个新tab页,浏览器会进行拦截,认为打开的是一个广告页。网络
(二)、因此若是不想让浏览器拦截,能够将这个“函数”改成用户点击时触发,这样浏览器就认为是用户想访问这个页面,而不是你直接弹出给用户。异步
(三)、即便是用户点击事件,若是在一次事件里调用屡次window.open()函数,则只有第一次被看成正常打开,以后的仍是会被看成广告页。函数
(四)、若是在点击事件里有ajax调用,window.open()在回调函数里执行,则浏览器仍然认为是js调用并看成广告拦截。除非ajax设置为“同步”模式。也能够用下面的方法解决url
var newWin = window.open(); $.ajax({ url:xxx, success: function(data){ newWin.location = data.url; } });
(五)、其余场景:spa
有的下载功能是这样实现的,当用户点击某个按钮后,在后台生成一个地址返回给前端,前端在请求的回调方法中,经过window.open()打开这个连接
因为前端须要给后台发送异步请求,因此window.open()也会被拦截
可行的方法是,在回调以后,生成一个<a>标签,且href设置为下载地址,而后触发这个<a>标签的点击事件,注意:<a>标签必定要加一个download属性,不然仍是会被拦截