JS前端广告拦截实现原理解析


Posted in Javascript onFebruary 17, 2020

这篇文章主要介绍了JS前端广告拦截实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

主流的浏览器,默认都开启了广告过滤,这对于用户(浏览者)来说,不但加快了访问网页的速度,而且也避免了勿点一些垃圾色情的东西,可以说绿色了网络环境。

第一、对于正常的广告拦截前端开发需要注意的是:

在请求图片与js文件、接口、文件内容最好不要包含ad、guanggao等关键词,可能被拦截

我们可以用一个请求来判断浏览器有没有开启广告拦截,如果我们需要插入广告,可以提示用户关闭广告拦截

<script src="http://demo.3water.com/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>

第二、浏览器对window.opne()的拦截,我们可以通过var x =window.open(url);然后判断x == undefined来判断新窗口是否被拦截。

(一)、 一般情况下,如果在js中调用window.open()函数去打开一个新tab页,浏览器会进行拦截,认为打开的是一个广告页。

(二)、所以如果不想让浏览器拦截,可以将这个“函数”改为用户点击时触发,这样浏览器就认为是用户想访问这个页面,而不是你直接弹出给用户。

(三)、即使是用户点击事件,如果在一次事件里调用多次window.open()函数,则只有第一次被当作正常打开,之后的还是会被当作广告页。

(四)、如果在点击事件里有ajax调用,window.open()在回调函数里执行,则浏览器仍然认为是js调用并当作广告拦截。除非ajax设置为“同步”模式。也可以用下面的方法解决

var newWin = window.open(); 
$.ajax({ 
  url:xxx, 
  success: function(data){ 
    newWin.location = data.url; 
  } 
});

(五)、其他场景:

有的下载功能是这样实现的,当用户点击某个按钮后,在后台生成一个地址返回给前端,前端在请求的回调方法中,通过window.open()打开这个链接

由于前端需要给后台发送异步请求,所以window.open()也会被拦截

可行的方法是,在回调之后,生成一个<a>标签,且href设置为下载地址,然后触发这个<a>标签的点击事件,注意:<a>标签一定要加一个download属性,否则还是会被拦截

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
range 标准化之获取
Aug 28 Javascript
javascript之bind使用介绍
Oct 09 Javascript
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
学习JavaScript设计模式之单例模式
Jan 19 Javascript
vue-resource 拦截器使用详解
Feb 21 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 #Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 #Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 #Javascript
Vue的双向数据绑定实现原理解析
Feb 17 #Javascript
JavaScript函数Call、Apply原理实例解析
Feb 17 #Javascript
javascript异常处理实现原理详解
Feb 17 #Javascript
Vue+webpack实现懒加载过程解析
Feb 17 #Javascript
You might like
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
JavaScript错误处理
2015/02/03 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python实现二维数组的对角线遍历
2019/03/02 Python
python speech模块的使用方法
2020/09/09 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
光声世纪笔试题目
2012/08/25 面试题
安全责任书范本
2014/04/15 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
护士业务学习心得体会
2016/01/25 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书