1. 程式人生 > 程式設計 >JS前端廣告攔截實現原理解析

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屬性,否則還是會被攔截

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。