以下のスクリプトを他のすべてのスクリプトよりも前に読み込む。
var nativeSetInterval = window.setInterval;
_setInterval = {};
window.setInterval = function(process, delay) {
var entry;
if(typeof process == 'string') {
entry = new _setInterval.Entry(function(){eval(process);}, delay);
}
else if(typeof process == 'function') {
entry = new _setInterval.Entry(process, delay);
}
else {
throw Error('第一引数が不正です。');
}
var id = _setInterval.queue.length;
_setInterval.queue[id] = entry
return id;
};
window.clearInterval = function(id) {
_setInterval.queue[id].loop = function(){};
};
_setInterval.queue = [];
_setInterval.Entry = function(process, delay) {
this.process = process;
this.delay = delay;
this.time = 0;
};
_setInterval.Entry.prototype.loop = function(time) {
this.time += time;
while(this.time >= this.delay) {
this.process();
this.time -= this.delay
}
};
_setInterval.lastTime = new Date().getTime();
nativeSetInterval(function() {
var time = new Date().getTime();
var subTime = time - _setInterval.lastTime;
_setInterval.lastTime = time;
for(var i = 0; i < _setInterval.queue.length; i++) {
_setInterval.queue[i].loop(subTime);
}
}, 10);
ある重いページで CPU 使用率が 1/3 になりました。このスクリプトを使う場合は必ずコメントください。
最新はこっちです
id:amachang:20060924:1159084608