我正在建立基于热毛巾模板的应用程序。 谷歌分析遇到问题。 我完全是新的,这是我到目前为止所做的:
1)在Google Analytics(分析)帐户中注册
2)在关闭我粘贴的标签之前的index.cshtml文件中:
<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');
</script>
3)从nuget到shell.ts文件中添加了TypeScript定义(我将其重写为TypeScript)
/// <reference path="../../scripts/typings/google.analytics/ga.d.ts" />
版本是0.0.9。
后来激活方法:
this.router.on('router:navigation:complete', (instance, instruction) => {
ga('create', 'UA-XXXXX-1', { 'cookieDomain': 'none' });
ga('send', 'pageview');
});
但是无法编译文件 - ga.d.ts中的ga对象定义没有声明任何函数 - 只有属性。
我做了一些研究并找到了可行的解决方案:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-51465809-1']);
_gaq.push(['_setCookieDomain', 'none']);
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setAllowHash', false]);
_gaq.push(() => {
var tracker = _gat._getTrackerByName('UA-51465809-1');
tracker._trackPageview();
});
但它似乎适用于以前的Google Analytics版本 - 而不是最新的版本。
尝试使用网站http://petermorlion.blogspot.com/2014/04/using-google-analytics-in-durandal-spa.html的信息但没有成功 - ga.d.ts中的ga对象定义没有声明任何函数。
感谢任何帮助。
答案 0 :(得分:0)
您确定您的激活方法是否正确? d.ts文件https://github.com/borisyankov/DefinitelyTyped/blob/master/google.analytics/ga.d.ts似乎与此处提到的https://developers.google.com/analytics/devguides/collection/gajs/目前
一致答案 1 :(得分:0)
这是我在shell.ts中的激活逻辑:
activate = () => {
ko.validation.configure({
registerExtenders: true,
messagesOnModified: false,
decorateElement: true,
errorElementClass: 'error',
messageTemplate: 'errorMessageTemplate',
errorMessageClass: 'error',
decorateInputElement: true
});
return m_dataservice.DataServiceInstance.primeData()
.then(this.boot)
.fail(this.failedInitialization);
}
boot = () => {
m_dataservice.DataServiceInstance.getHelpLink().then((data) => { this.helpLink = data.results; });
m_dataservice.DataServiceInstance.getFooterLinks().then((data) => {
this.tmpLinki(data.results);
});
var routes = [
{ route: '', moduleId: 'home', title: 'My Apps', nav: true, customBind: false },
{ route: 'appcatalog', moduleId: 'appcatalog', title: 'App Catalog', nav: true, customBind: false },
{ route: 'aboutus', moduleId: 'aboutus', title: 'About Us', nav: true, customBind: false },
{ route: 'faq', moduleId: 'faq', title: 'FAQ', nav: true, customBind: false },
{ route: 'login', moduleId: 'login', title: 'Login', nav: true, customBind: false }
];
this.router.on('router:route:not-found', function(fragment) {
this.logError('No Route Found', fragment, true);
});
this.router.on('router:navigation:complete', (instance, instruction) => {
ga('create', 'UA-XXXX-Y', { 'cookieDomain': 'none' });
ga('send', 'pageview');
});
var tmp = this.router.makeRelative({ moduleId: 'viewmodels' })
.map(routes)
.buildNavigationModel();
return tmp.activate();
}
以'ga'开头的行以红色加下划线 - '无法调用类型缺少调用签名的表达式。