Javascript 像google analytics那样加载js脚本,然后运行函数

Javascript 像google analytics那样加载js脚本,然后运行函数,javascript,google-analytics,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

我正在尝试修改一个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
方法,因为我过去尝试过,并且在一些浏览器中遇到了问题。我试图找出谷歌分析是如何做到这一点的,但我的js技能并没有那么好。以下是分析示例:

(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文件中调用的是
窗口['ga']
函数吗?如何执行?

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

这详细解释了GA代码:

GA()
之所以执行,是因为自调用匿名函数(SAIF)正好做到了这一点——它在定义后调用或执行自身,参数在末尾提供

这详细解释了GA代码: