主流的瀏覽器,默認都開啓了廣告過濾,這對於用戶(瀏覽者)來講,不但加快了訪問網頁的速度,並且也避免了勿點一些垃圾色情的東西,能夠說綠色了網絡環境。javascript
第1、對於正常的廣告攔截前端開發須要注意的是:前端
在請求圖片與js文件、接口、文件內容最好不要包含ad、guanggao等關鍵詞,可能被攔截java
咱們能夠用一個請求來判斷瀏覽器有沒有開啓廣告攔截,若是咱們須要插入廣告,能夠提示用戶關閉廣告攔截ajax
<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>
第2、瀏覽器對window.opne()的攔截,咱們能夠經過var x =window.open(url);而後判斷x == undefined來判斷新窗口是否被攔截。瀏覽器
(一)、 通常狀況下,若是在js中調用window.open()函數去打開一個新tab頁,瀏覽器會進行攔截,認爲打開的是一個廣告頁。網絡
(二)、因此若是不想讓瀏覽器攔截,能夠將這個「函數」改成用戶點擊時觸發,這樣瀏覽器就認爲是用戶想訪問這個頁面,而不是你直接彈出給用戶。異步
(三)、即便是用戶點擊事件,若是在一次事件裏調用屢次window.open()函數,則只有第一次被看成正常打開,以後的仍是會被看成廣告頁。函數
(四)、若是在點擊事件裏有ajax調用,window.open()在回調函數裏執行,則瀏覽器仍然認爲是js調用並看成廣告攔截。除非ajax設置爲「同步」模式。也能夠用下面的方法解決url
var newWin = window.open(); $.ajax({ url:xxx, success: function(data){ newWin.location = data.url; } });
(五)、其餘場景:spa
有的下載功能是這樣實現的,當用戶點擊某個按鈕後,在後臺生成一個地址返回給前端,前端在請求的回調方法中,經過window.open()打開這個連接
因爲前端須要給後臺發送異步請求,因此window.open()也會被攔截
可行的方法是,在回調以後,生成一個<a>標籤,且href設置爲下載地址,而後觸發這個<a>標籤的點擊事件,注意:<a>標籤必定要加一個download屬性,不然仍是會被攔截