Javascript 像google analytics那样加载js脚本,然后运行函数
我正在尝试修改一个js代码段,它创建了一个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
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代码: