我們爲電子商務網站所有者提供我們的客戶可以嵌入其網站的JS模塊。它基本上是一個<script src=...>
,他們在HTML中加載我們的JavaScript並在結賬時顯示我們的UI,類似於this。避免與嵌入式JS模塊中的Google Analytics發生全球衝突
現在,因爲我獨立加載谷歌分析模塊(根據their docs):
<script>
(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','https://www.google-analytics.com/analytics.js','ga');
// ...
</script>
我冒着與託管網站自身的谷歌Analytics(分析)模塊的衝突。
即使我跟隨renaming the ga object說明:
<script>
(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','analytics');
</script>
(注意'analytics'
變化)
它仍然是有風險的,因爲它取決於i['GoogleAnalyticsObject']=r
位,這在技術上是window['GoogleAnalyticsObject']=customGlobalName
。 analytics.js腳本加載時,會在window['GoogleAnalyticsObject']
中查找全局名稱並使用它。但是這意味着我會覆蓋託管網站的值window['GoogleAnalyticsObject']
,即使它默認爲ga
。
我看到他們,它們允許renaming the gtag object一個更好的辦法,但它仍然處於alpha階段:(。
有什麼想法?
不,我不明白問題是什麼。你爲什麼把你的變量和谷歌一樣調用?如果你正確關閉你的js,衝突的可能性對我來說似乎很小。基本上我不明白爲什麼這是一個問題,或者你爲什麼需要重命名'ga'對象 – Liam
@Liam,他擔心再次包括GA片段將覆蓋現有的ga對象並因此重置其配置選項(所以客戶自己的追蹤將被打亂)。這實際上不是問題,因爲Google編寫代碼以便您可以擁有多個跟蹤器,並且會中止嘗試再次運行該代碼段,但這是一個值得關注的問題。 –
是的,我從你的答案中得到了答案。感謝您澄清@EikePierstorff – Liam