- 締切済み
スクリプト
javascript: document.cookie="nicohistory=;path=/;domain=nicovideo.jp;"; ml='watch/'+Video.v;sl='api/getflv/'+(Video.v+'\x3f').replace(/nm.*/,"$&as3=1&")+'ts='+(new Date()-7999); sb=function(ul){new Ajax.Request(ul,{method:'get'})}; me=function(ul,ue){new Ajax.Request(ul,{method:'get',onSuccess:function(h){sb(ue)}})}; me(ml,sl); void(0); このスクリプトを8秒ごとに30回実行させてその後45秒休むことを繰り返すスクリプトにするにはどうしたらいいですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
<script type="text/javascript"> ------------------------------------- sb=function(ul){new Ajax.Request(ul,{method:'get'})}; me=function(ul,ue){ new Ajax.Request( ul, {method:'get',onSuccess:function(h){sb(ue)} }); }; var Timer = function(func,max,w){ this.func = func; this.count = 0; this.max = max; this.w = w; this.f = null; }; Timer.prototype.start = function(){ var that = this; var cbfn = function(){that.loop();}; if(! this.f) this.f = window.setInterval(cbfn,this.w); }; Timer.prototype.loop = function(){ this.func(); if(++this.count >= this.max) this.stop(); }; Timer.prototype.stop = function(){ if(this.f){ clearInterval(this.f); this.f = null; } }; var func8 = function(){ me(ml,sl); } function func45(){ var t1 = new Timer(func8,30,8000); t1.start(); } func45(); window.setInterval(func45,5000); </script> ※mlとslの参照の後始末はprototype.jsが勝手にうまくやってくれるのだろう と予想して...
- yyr446
- ベストアンサー率65% (870/1330)
さらに言えば、Ajax.Requestは通常非同期だから、8秒ごとに呼び出しても、 結果が戻ってくるタイミングがばらばらで、1リクエスト当たり0.3秒(8/30)以上 かかれば、ぐちゃぐちゃになるのでは? 違うかな(?)
- 城戸 誠(@kido_makoto)
- ベストアンサー率32% (21/65)
setTimeout()、setInterval()を使って定期的に呼び出すか、 これらの関数を使ってsleep関数を実装するのがベストです。 細かく言うと上記スクリプトの実行時間も考慮に入れて実装しないと、ほんの少しだけ時間がズレます。 といっても0.1秒とかそれくらいのオーダーですけど。