我正在使用Durandal 1.2和Durandal Router Plugin,并希望通过Google Analytics跟踪SPA中的网页浏览量:
window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]
我知道我可以监听hashchange事件,甚至可以通过Sammy挂钩。我不愿意这样做,因为Durandal目前正在rewritten删除对Sammy的依赖。
我的问题是,有没有办法使用Durandal路由器插件进行设置?
答案 0 :(得分:5)
查看路由器中的onNavigationComplete
。您可以覆盖它来进行分析:
// Store reference to router's onNavigationComplete so you can call it
var onNavigationComplete = router.onNavigationComplete;
router.onNavigationComplete = function (routeInfo, params, module) {
// Run the default onNavigationComplete
onNavigationComplete.call(this, routeInfo, params, module);
// Analytics!
window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]
};
显然,您需要在应用程序生命周期的早期某个地方执行此操作,例如在main.js
中。
答案 1 :(得分:4)
您还可以附加到navigation complete
事件,这样您就不必存储路由器的原始功能。
//Update anaytics whenever the router navigates
router.on('router:navigation:complete', function(instance, instruction) {
window._gaq.push(['_trackPageview', instruction.fragment]);
});