JS前端广告拦截实现原理解析

 更新时间:2020年02月17日 10:57:06   作者:欢乐之家  
这篇文章主要介绍了JS前端广告拦截实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了JS前端广告拦截实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  主流的浏览器,默认都开启了广告过滤,这对于用户(浏览者)来说,不但加快了访问网页的速度,而且也避免了勿点一些垃圾色情的东西,可以说绿色了网络环境。

  第一、对于正常的广告拦截前端开发需要注意的是:

    在请求图片与js文件、接口、文件内容最好不要包含ad、guanggao等关键词,可能被拦截

    我们可以用一个请求来判断浏览器有没有开启广告拦截,如果我们需要插入广告,可以提示用户关闭广告拦截

<script src="http://demo.jb51.net/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 HTML操作代码

    javascript HTML操作代码

    用 js操作html标签的一些代码,大家可以运行后查看效果
    2008-11-11
  • 如何使用three.js 制作一个三维的推箱子游戏

    如何使用three.js 制作一个三维的推箱子游戏

    这篇文章主要介绍了如何使用three.js 制作一个三维的推箱子游戏,文中代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 深入理解Webpack 中路径的配置

    深入理解Webpack 中路径的配置

    这篇文章主要给大家介绍了关于Webpack2中路径配置的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • javascript 建设银行登陆键盘

    javascript 建设银行登陆键盘

    javascript模拟键盘输入密码
    2008-06-06
  • JavaScript编写一个贪吃蛇游戏

    JavaScript编写一个贪吃蛇游戏

    本文主要介绍了JavaScript写的一个贪吃蛇游戏的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • SWFObject 2.1以上版本语法介绍

    SWFObject 2.1以上版本语法介绍

    用SWFObject 插入flash,好处多多,代码简洁,不会出现微软的“单击此处以激活控件”的提示(据可靠消息,这个是微软惹的官司,其结果是害苦了用户)。
    2010-07-07
  • javascript常用的设计模式

    javascript常用的设计模式

    本文主要介绍了javascript常用的设计模式:单例模式;工厂模式;适配模式;外观模式。下面跟着小编一起来看下吧
    2017-02-02
  • webpack-dev-server 的 host 配置 0.0.0.0的方法

    webpack-dev-server 的 host 配置 0.0.0.0的方法

    这篇文章主要介绍了webpack-dev-server 的 host 配置 0.0.0.0的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下
    2024-01-01
  • 前端开发过程中浏览器版本的两种判定方法

    前端开发过程中浏览器版本的两种判定方法

    前端开发过程中经常需要判断浏览器的版本,达到同时兼容多个浏览器的目的,下面有两种不错的常用方法:jquery及HTML中的注释,喜欢的朋友可以参考下
    2013-10-10
  • 如何利用Typescript封装本地存储

    如何利用Typescript封装本地存储

    这篇文章主要给大家介绍了关于如何利用Typescript封装本地存储的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01

最新评论