像谷歌分析一样加载js脚本,然后运行一个函数

时间:2016-02-22 18:00:02

标签: javascript google-analytics

我正在尝试修改创建js标记的js片段,它目前使用document.write来破坏删除所有现有DOM元素的页面。我想使用google analytics这样的东西,我现在的代码看起来像这样:

var scr = document.createElement('script');
scr.type = 'text/javascript';
scr.async = true;
scr.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.myurl.com/myscript.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(scr, s);

stuff.somefunc({
    userID: '2312312'
});

我的问题是stuff显然是未定义的,我想避免使用某些onload方法,因为我在过去尝试过并在某些浏览器中遇到问题。我试图找出谷歌分析如何做到这一点,但我的技能并不是那么好。这是分析样本:

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

 ga('create', 'UA-xxxxxxxx-x', 'xxxxxx.com');
 ga('send', 'pageview');

他们如何能够ga()运行?据我所知,他们正在使用window['ga']创建一个全局函数,并将参数推送到window['ga'].q的数组中,但那又是什么呢?是否在analytics.js文件中调用了window['ga']函数?怎么样?

1 个答案:

答案 0 :(得分:2)

执行

ga()是因为自调用匿名函数(SAIF)正是这样做的 - 它在定义之后调用或执行自身,并使用参数末尾提供的参数。

这详细解释了GA代码:Group by, Count and Lambda Expression