backbone.js アプリでバックボーン ルート フィルターhttps://github.com/fantactuka/backbone-route-filterを使用しています。これは 1 ページのアプリなので、KissMetrics イベント追跡スニペットを使用してページビューを記録しようとしていました。コードは次のとおりです。
before: {
'*any': function(fragment, args) {
}
},
after: {
'*any': function(fragment) {
var _kmq = window._kmq || [];
_kmq.push(['record', 'Viewed ' + fragment]);
}
},
問題は、_kmq 変数の「ウィンドウ」スコープを指定しない限り、イベントが追跡されないことです。なんで?私のindex.html、またはすべてのjsコードを含む1つのページには、次のものがあります。
var _kmq = _kmq || [];
グローバルレベルで自動的に変数を作成すると思いました...これは典型的な実装へのリンクです: http://support.kissmetrics.com/apis/javascript/index.htmlスコープをウィンドウに設定せずに、一般的なAPIメソッドが機能しました:http://support.kissmetrics.com/apis/javascript/javascript-specific/index.html
「_kmq」だけでなく「window._kmq」を指定する必要があったのはなぜですか?