其實兩個月前就有個客戶問我能不能在GA中檢測有多少人屏蔽了他們網站的廣告。還附送了我一個鏈接問我那個方法可不可以。
好像我當時正在出差js最后加載廣告方法,郵件石沉大海。昨天終于跟我怒了 (+_+)
經過了一系列親切友好的討論,昨天這個事算是差不多結了。想了想似乎可以寫下來跟大家分享一下。
為了多湊點字數我就不直接甩解決方法而是講一下心路歷程了。
開始思路有兩條,一是檢測網站的廣告是否成功加載。通過查看相關元素。來判斷是否被屏蔽。如果無法找到相關元素,就說明廣告被屏蔽了,這是發送一個攜帶相關信息的事件給GA服務器。然而網站有些復雜,廣告位也很多,這個方法雖然可以在GTM內完成,但是工作量略大。而且每個頁面都要發送額外的一個HIT,即使是GAP用戶,hit數也是有上限的啊~
第二個方法是另一種目前的主流解決方案。
我們新建一個叫做ads.js的文件,里面只放一行代碼:
var canAdsLoads = true;
并讓網站加載的時候先嘗試加載這個文件。
由于這個文件的名字帶“ads”字樣,大部分的廣告屏蔽插件會阻攔這個文件的加載。所以在沒有安裝常見的插件的瀏覽器上,這個ads.js成功加載并聲明一個叫做 的變量,并賦值成 true。而在安裝了插件的瀏覽器上,這個文件不會被加載,也就不會存在一個叫做 的變量。
接下來,我們在GTM代碼加載之前,聲明之后,對這個變量進行判斷
if(!!canAdsLoads && canAdsLoads == true)
dataLayer.push("adStatus":"pass");
else
dataLayer.push("canAdsLoads":"blocked");
注意,一定要在GTM加載之前進行判斷,并將相關信息push到中。這樣在GTM加載的時候默認的才能攜帶這個信息。
之后就是在GTM內的工作了,新建一個 名字叫做 , 并在所有的和event tag上(不要你跟我說你有200個這樣的tag...)加上一個 ,讓他的值等于{{}}
--> 齊活~
PS 如果不介意hit數的話可以在網頁最后檢測這個ads.js是否加載,以更加準確,但是你需要在最后通過push一個事件來獲得這個信息。
又PS 如果不是用GTM的話把上面的判斷代碼改成
if(!!canAdsLoads && canAdsLoads == true){

ga('send', 'pageview', {
'dimension5': canAdsLoads
});
}
else
ga('send', 'pageview')

當然,這個肯定是要在GA的之后了。
該說的應該就是這些了js最后加載廣告方法,注意,這個不會檢測所有 但是對大部分常見的都應該有效。而這種方法應該也是性價比最高的檢測方法了。
最后 歡迎大家提問 投稿 或者告訴我想多了解什么方向的內容 ^_^
另外 點個關注啊少年!
知乎專欄 -- 不完全使用指南