私は単一のページから成る単純なウェブサイトを持っています。使用状況はPiwik経由で追跡されています。ページのデザインのために、ユーザーは通常、ナビゲーションバーを使用してリンクをクリックするのではなく、リンクトラッキングをウェブサイトの使用方法についての非常に情報がない方法にする代わりにスクロールすることに頼っています。しかし、のいずれかを満たすすべてのスクロールをJavascriptのスクロール:最小限のCPU使用量で1回だけ機能を実行するには?
setInterval(reportposition, 1000);
function reportposition() {
$(function() {
var $win = $(window);
$win.scroll(function() {
if ($win.scrollTop() == 0) {
_paq.push(['trackEvent', 'Scroll', 'PageTop']);
} else if (($(document).height() - $win.scrollTop()
< 7540) && ($(document).height() - $win.scrollTop() > 7500)) {
_paq.push(['trackEvent', 'Scroll', 'About']);
}
else if ($win.height() + $win.scrollTop()
== $(document).height()) {
_paq.push(['trackEvent', 'Scroll', 'PageBottom']);
}
});
});
};
:ユーザーの行動を追跡するために、私は、ページ上のユーザの位置を決定し、その後、追跡サーバに要求を送信し、「スクロール」を使用してjsの機能を持っています条件は何十回も実行され、したがって数十の追跡要求をサーバーに送信します。私は、関数がsetIntervalで実行される頻度を低くしようとしましたが、その効果はごくわずかです。違う条件が満たされるまで条件が満たされたときに一度だけ発火するような方法はありますか?
単純なスクロールで何百ものイベントが発生する可能性があるため、スクロールしてユーザーの位置を確認するのはむしろCPUサイクルに関するものです。できるだけ少ないCPU使用量でこの問題を解決する方法はありますか?