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 相关文章推荐
jQuery基本选择器选择元素使用介绍
Apr 18 Javascript
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
深入理解JS中的substr和substring
Apr 26 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
vue组件实现可搜索下拉框扩展
Oct 23 Javascript
详解vue-router传参的两种方式
Sep 10 Javascript
ES2020 新特性(种草)
Jan 12 Javascript
基于vue--key值的特殊用处详解
Jul 31 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计算title标题相似比的方法
2015/07/29 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
python监控键盘输入实例代码
2018/02/09 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
测量员岗位职责
2015/02/14 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python