JavaScript:防止GoogleAnalytics脚本执行,直到我的脚本准备就绪

时间:2017-10-17 09:48:46

标签: javascript vue.js

我明白了:

    this.$resource('api/elements/item').get().then(function (result) {
        // do something cool

    }); 

这很好。

但是现在,我想阻止另一个脚本(谷歌分析标签)被执行,直到这个脚本准备就绪。

这是google analytics代码的示例:

    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-5xxxxxx-5"</script>
    <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    gtag('config', 'UA-5xxxxxx-5');
    </script>
</body>

那么可以让google脚本等待我的脚本吗?

3 个答案:

答案 0 :(得分:1)

准备好后调用gtag ......

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-5xxxxxx-5"</script>
    <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    //gtag('config', 'UA-5xxxxxx-5'); <-- REMOVE THIS LINE
  </script>




this.$resource('api/elements/item').get().then(function (result) {
        // do something cool
        gtag('config', 'UA-5xxxxxx-5'); <-- CALL GTAG HERE
    }); 

答案 1 :(得分:0)

我从适合我的东西中改编了这个。 我也看不出有什么理由不适合你。

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-5xxxxxx-5">
</script>
<script>
window.dataLayer=window.dataLayer||[];
function gtag()
{
 dataLayer.push(arguments);
}
gtag('js',new Date());
this.$resource('api/elements/item').get().then(function(result)
{
 //do something awesome
 gtag('config','UA-5xxxxxx-5');
});
</script>

答案 2 :(得分:0)

您是否正在寻找动态添加脚本标记的方法?如果是这样,这应该可以解决问题:

this.$resource('api/elements/item').get().then(function(result) {

   // Add script tag to document
   var script = document.createElement('script');
   script.src = 'https://www.googletagmanager.com/gtag/js?id=UA-5xxxxxx-5';
   document.body.appendChild(script);

   window.dataLayer = window.dataLayer || [];

   function gtag() {
     dataLayer.push(arguments);
   }
   gtag('js', new Date());

   gtag('config', 'UA-5xxxxxx-5');
});