8

Durandal 1.2 とDurandal Router Pluginを使用しており、Google アナリティクスを通じて SPA のページ ビューを追跡したいと考えています。 window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]

hashchange イベントをリッスンしたり、Sammy経由でフックしたりできることはわかっています。デュランダルが現在サミーへの依存を取り除くために書き直されていることを考えると、私はそれをしたくありません。

私の質問は、デュランダル ルーター プラグインを使用してこれを設定する方法はありますか?

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 に答える