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 相关文章推荐
Dom 结点创建 基础知识
Oct 01 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
js之onload事件的一点使用心得
Aug 14 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
Sep 12 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
Mar 22 Javascript
js读写json文件实例代码
Oct 21 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
详解Node.js:events事件模块
Nov 24 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
详解http访问解析流程原理
Oct 18 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 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内存相关的功能特性详解
2013/06/08 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP实现递归的三种方法
2020/07/04 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
node.js中watch机制详解
2014/11/17 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Python生成pdf文件的方法
2014/08/04 Python
Python入门篇之文件
2014/10/20 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python 简单的调用有道翻译
2020/11/25 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
班长竞选演讲稿
2014/04/24 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers