8

我正在使用 Durandal 1.2 和Durandal 路由器插件,并希望通过 Google Analytics 跟踪 SPA 中的页面浏览量: window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]

我知道我可以监听 hashchange 事件,甚至可以通过Sammy连接。我宁愿不这样做,因为目前正在重写Durandal以消除对 Sammy 的依赖。

我的问题是,有没有办法使用 Durandal 路由器插件进行设置?

4

2 回答 2

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.

于 2013-06-05T23:18:31.193 回答
4

您还可以附加到navigation complete事件,这样您就不必存储路由器的原始功能。

//Update anaytics whenever the router navigates
router.on('router:navigation:complete', function(instance, instruction) {
    window._gaq.push(['_trackPageview', instruction.fragment]);
});
于 2013-08-30T15:24:42.723 回答