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 相关文章推荐
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
Aug 15 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
jQuery取消特定的click事件
Feb 29 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
Node.js Windows Binary二进制文件安装方法
May 16 Javascript
基于JQuery实现页面定时弹出广告
May 08 jQuery
Openlayers学习之地图比例尺控件
Sep 28 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
ThinkPHP模型详解
2015/07/27 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
python多线程之事件Event的使用详解
2018/04/27 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
python实现人工蜂群算法
2020/09/18 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
关于爱情的广播稿
2014/01/16 职场文书
农村改厕实施方案
2014/03/22 职场文书
实习单位评语
2014/04/26 职场文书
公证委托书标准格式
2014/09/11 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
运动会稿件100字
2014/09/24 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
离婚协议书怎么写
2015/01/26 职场文书
早恋主题班会
2015/08/14 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers