eコマースウェブサイトの所有者であるクライアントに、自分のウェブサイトに埋め込むことができるJSモジュールを提供します。基本的に<script src=...>
のHTMLに入れてJavaScriptを読み込み、thisのようなチェックアウト時にUIを表示します。私は(their docsによると)独立して、Googleアナリティクスのモジュールをロードしていますので、今埋め込み可能なJSモジュールでGoogleアナリティクスとグローバルに競合することを避ける
:
<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>
は私がホスティングウェブサイトの独自のGoogle 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'
の変化に注意してください)
それは技術的にwindow['GoogleAnalyticsObject']=customGlobalName
あるi['GoogleAnalyticsObject']=r
ビット、に依存しているため、それは、まだ危険なのです。 analytics.jsスクリプトが読み込まれると、window['GoogleAnalyticsObject']
のグローバル名が検索され、使用されます。しかし、それは、デフォルトではga
になっていても、ホスティングウェブサイトのwindow['GoogleAnalyticsObject']
の値を上書きすることを意味します。
私は彼らののために、彼らはrenaming the gtag objectへのより良い方法を許すが、それはアルファ段階ではまだだと:(。
任意の考えを見た?
いいえ、問題は何か分かりません。なぜあなたの変数をGoogleと同じように呼んでいますか?あなたが適切な閉鎖であなたのjsをラップする場合、紛争の可能性は私には非常に最小限に見えます。基本的に私はなぜこれが問題なのか、 'ga'オブジェクトの名前を変更する必要があるのか理解していません – Liam
@Liam、彼はGAスニペットを2度追加すると既存のgaオブジェクトを上書きして設定オプションをリセットするクライアント自身のトラッキングは中断されます)。これは実際に問題ではありません.Googleは複数のトラッカーを持つことができるようにコードを作成し、もう一度コードを実行しようとする試みを中止しますが、それは有効な問題です。 –
ええ、私はあなたの答えからそれを得ました。とにかく@EikePierstorff – Liam