多分これで決まりだと思うのだが、location.hashは結局なんのイベントも起こさないのでsetTimeoutみたいなのを使ってビジーループ風味に処理しないといけないっぽい。要は人間様が気づかなければそれでいいのだが、無駄にシステムリソースを食いそうでそれがなんか嫌なんだけどな。というわけで、ページングは今まで明示的にAjax.Requestを呼び出していたのだが、それただlocation.hashを変更するようにする。
element.onclick = function () {
...
location.hash = 'p=' + page++;
}
これを、PeriodicalExecuterに感知してもらって、そこからAjax.Requestを呼ぶ感じ。
function callback () {
if (needs_update) {
new Ajax.Request(...);
}
};
new PeriodicalExecuter(callback, 0.5);
一番のポイントはこの0.5という数を変更して、ユーザーがストレスと感じないようにしつつ、システムリソースを最低限にすることだろう。さてどうしたもんかな。