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 相关文章推荐
javascript 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
jQuery UI AutoComplete 使用说明
Jun 20 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
JavaScript中立即执行函数实例详解
Nov 04 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
详解JS函数防抖
Jun 05 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
JS+CSS实现炫酷光感效果
Sep 05 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
Zend 输出产生XML解析错误
2009/03/03 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
Python中的super()方法使用简介
2015/08/14 Python
Flask-Mail用法实例分析
2018/07/21 Python
详解python分布式进程
2018/10/08 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
董事长职责范文
2013/11/08 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
美术毕业生求职信
2014/02/25 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
梅花魂教学反思
2014/04/25 职场文书
党支部综合考察材料
2014/05/19 职场文书
2015新年寄语大全
2014/12/08 职场文书
退伍军人感言
2015/08/01 职场文书
交通事故责任认定书
2015/08/06 职场文书
学生病假条范文
2015/08/17 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
JS setTimeout与setInterval的区别
2022/04/20 Javascript