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中SetTimeOut传参问题探讨
May 10 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
node vue项目开发之前后端分离实战记录
Dec 13 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
如何在vue中使用ts的示例代码
Feb 28 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
Mar 14 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
puppeteer库入门初探
Jan 09 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 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 文章调用类代码
2011/08/11 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
Javascript的比较汇总
2016/07/25 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python使用epoll实现服务端的方法
2018/10/16 Python
python实现flappy bird小游戏
2018/12/24 Python
python opencv实现简易画图板
2020/08/27 Python
python中的插入排序的简单用法
2021/01/19 Python
斯福泰克软件测试面试题
2015/02/16 面试题
业务主管岗位职责
2013/11/20 职场文书
会计自荐书
2013/12/02 职场文书
治超工作实施方案
2014/05/04 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
学校通报表扬范文
2015/05/04 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python