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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
jQuery中的常用事件总结
Dec 27 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
Nov 19 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
使用iojs的jsdom库实现同步系统时间
Apr 20 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
JavaScript的==运算详解
Jul 20 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
Nov 16 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
javascript 内存模型实例详解
Apr 18 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python 将md5转为16字节的方法
2018/05/29 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
使用Python实现画一个中国地图
2019/11/23 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python统计文章中单词出现次数实例
2020/02/27 Python
在求职信中如何凸显个人优势
2013/10/30 职场文书
晚会邀请函范文
2014/01/24 职场文书
装饰活动策划方案
2014/02/11 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
旅游文化节策划方案
2014/06/06 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
英语专业自荐书
2014/06/13 职场文书
2015最新民情日记范文
2015/06/26 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
MySQL系列之四 SQL语法
2021/07/02 MySQL
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技