私は自己実行匿名関数内にカスタムJavaScriptを書き込もうとしています。このカスタムjavascriptは、Googleアナリティクスライブラリの読み込み時に作成されるグローバルGoogle Analytics ga
関数と対話する必要があります。ページの一番下に自己実行匿名関数のJavascript google analytics
<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','ga');
ga('create', 'UA-XXXXXXXX-X', 'auto');
</script>
、ロードされているJavaScriptの私のカスタム:次のコードは、ライブラリをロードするページの<head>
です。これはコードです:
(function($, MutationObserver, shippingMethods, ga) {
function triggerPageview(path) {
ga('send', 'pageview', path);
}
})(jQuery, MutationObserver, shippingMethods, ga);
私が探しているのは、現在のコードがページビューを正常に起動しないことです。私はこのように、引数からGAを削除した場合、ページビューにのみトリガされます:
(function($, MutationObserver, shippingMethods) {
function triggerPageview(path) {
ga('send', 'pageview', path);
}
})(jQuery, MutationObserver, shippingMethods);
作品上記のコードで、最初の例にはありません。私は、これは自分自身で実行されている無名関数に対するこれらの議論がどのように働くはずであると誤解していると仮定しています。自己実行機能が実行されると、外部Google Analyticsライブラリが読み込まれる前に、ga
の値がある値になっていると思います。しかし、私はライブラリがロードされた後、ga
が更新され、私の関数内のga
も更新されると考えました。これは本当ですか?
ページビューがトリガーされる前に私が最初に渡されたga
で、比較するために、ga
の値をログに記録:このログ
(function($, MutationObserver, shippingMethods, ga) {
function triggerPageview(path) {
console.log(ga);
ga('send', 'pageview', path);
}
})(jQuery, MutationObserver, shippingMethods, ga);
:
ƒ(){
(i[r].q=i[r].q||[]).push(arguments)}
を次にga
引数なし:
(function($, MutationObserver, shippingMethods) {
function triggerPageview(path) {
console.log(ga);
ga('send', 'pageview', path);
}
})(jQuery, MutationObserver, shippingMethods);
このログには:
私は間違いなく誤解しているようです。誰かがここで何が起こっているのか説明できますか?私が見せているように、カスタムコード内のグローバルを参照する「適切な」方法は何ですか?私は私の関数にga
を渡すとき
、それはga
の現在値の「コピー」を作るのではなく、グローバルga
変数を参照していますか?