• 前端广告拦截浅谈


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

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

        在请求图片与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属性,否则还是会被拦截

        

  • 相关阅读:
    mp3播放器(四)(从服务器端下载mp3文件+service的应用+SDcard操作)
    mp3播放器(二)(adapter模式将显示在屏幕上)
    HTML日记一(表格,图片,超链接,无序列表,frameset框架集)
    HTML日记三(地图图片映射)
    聚集索引和非聚集索引[转]
    linq 解决winForm中控件CheckedListBox操作的问题。(转载)
    C#抓取网页数据、分析并且去除HTML标签(转载)
    Cachecontrol使用:header('Cachecontrol:private')
    缓存DataSet(转载)
    jquery调用基于.NET Framework 3.5的WebService返回JSON数据 (转)
  • 原文地址:https://www.cnblogs.com/fqlGlog/p/8317180.html
Copyright © 2020-2023  润新知