JS前端广告拦截实现原理解析
这篇文章主要介绍了JS前端广告拦截实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主流的浏览器,默认都开启了广告过滤,这对于用户(浏览者)来说,不但加快了访问网页的速度,而且也避免了勿点一些垃圾色情的东西,可以说绿色了网络环境。
第一、对于正常的广告拦截前端开发需要注意的是:
在请求图片与js文件、接口、文件内容最好不要包含ad、guanggao等关键词,可能被拦截
我们可以用一个请求来判断浏览器有没有开启广告拦截,如果我们需要插入广告,可以提示用户关闭广告拦截
/*这个js文件的内容为varkillads=true;*/ if(typeof(killads)=='undefined'){alert('广告被过滤');}
第二、浏览器对window.opne()的拦截,我们可以通过varx=window.open(url);然后判断x==undefined来判断新窗口是否被拦截。
(一)、一般情况下,如果在js中调用window.open()函数去打开一个新tab页,浏览器会进行拦截,认为打开的是一个广告页。
(二)、所以如果不想让浏览器拦截,可以将这个“函数”改为用户点击时触发,这样浏览器就认为是用户想访问这个页面,而不是你直接弹出给用户。
(三)、即使是用户点击事件,如果在一次事件里调用多次window.open()函数,则只有第一次被当作正常打开,之后的还是会被当作广告页。
(四)、如果在点击事件里有ajax调用,window.open()在回调函数里执行,则浏览器仍然认为是js调用并当作广告拦截。除非ajax设置为“同步”模式。也可以用下面的方法解决
varnewWin=window.open(); $.ajax({ url:xxx, success:function(data){ newWin.location=data.url; } });
(五)、其他场景:
有的下载功能是这样实现的,当用户点击某个按钮后,在后台生成一个地址返回给前端,前端在请求的回调方法中,通过window.open()打开这个链接
由于前端需要给后台发送异步请求,所以window.open()也会被拦截
可行的方法是,在回调之后,生成一个标签,且href设置为下载地址,然后触发这个标签的点击事件,注意:标签一定要加一个download属性,否则还是会被拦截
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。