2013-10-15 38 views
1

我的網站正在轉向Universal Analytics,我遇到了將自定義維度推送到GA的順序問題。Universal Analytics中用於設置自定義維度的操作順序

此前,您可以在任何其他_gaq函數和GA將它撿起之前調用_setCustomVar。

即,

var _gaq = _gaq || []; 
_gaq.push(['_setCustomVar', 5, "custom_key", "custom_value", 2]); 

// DO OTHER STUFF 

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-545323212-1']); 
_gaq.push(['_setDomainName', 'mysite.com']); 
_gaq.push(['_trackPageview']); 

(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})(); 

但是,我無法找到一個方法來調用與通用分析此功能之前,對象是設置:

ga('set', 'dimension2', 'CUSTOMDIMENSIONVALUE'); 

// DO OTHER STUFF 

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 
ga('create', 'UA-434323212-1', 'mysite.com'); 
ga('send', 'pageview'); 

由於ga()是一個函數,我怎麼能叫整合之前,存在?對GA Universal Analytics腳本進行解碼,看起來好像我可以將數據推送到對象中,但是我發現在調用ga('create')函數之前什麼都不會生效。

我知道簡單的解決方案是將我的自定義維度調用向下移動到正確的順序,但由於多種原因,這不是我的選擇。

任何幫助表示讚賞!

回答

1

移動初始塊和'create'調用你的頁面的頂部,上面你設置你的自定義代碼(如頭標記),並在頁面的底部離開'send'通話,讓您的自定義代碼在他們之間,而不必實際移動自定義代碼。

或者,讓您現在的主代碼塊位於底部,並在'create''send'之間放置回調函數,然後將自定義代碼包裝在回調函數中。

+0

可以說我無法在任何地方移動代碼。這裏的任何建議是否可以聽取ga('create')屬性的變化? http://stackoverflow.com/questions/1063813/listener-for-property-value-changes-in-a-javascript-object – jamis0n

+0

@ jamis0n你可以把代碼塊的前半部分加載'analytics.js'文件並將其放在自定義代碼的上方,因爲它被設置爲允許在腳本加載之前「推送」..但是這並沒有解決GA腳本無法識別在「 '創造''推動'。如果你對'analytics.js'進行逆向工程,顯然有些函數可以解析傳遞給'ga()'的函數,所以它可能會使用'.prototype'方法來覆蓋那裏的東西來重新排序,但國際海事組織可能不值得嘗試做這種事情...... –

+0

..甚至值得試圖弄清楚它是否有可能。 –

相關問題