• 締切済み

スクリプト

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秒休むことを繰り返すスクリプトにするにはどうしたらいいですか?

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

<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)
回答No.2

さらに言えば、Ajax.Requestは通常非同期だから、8秒ごとに呼び出しても、 結果が戻ってくるタイミングがばらばらで、1リクエスト当たり0.3秒(8/30)以上 かかれば、ぐちゃぐちゃになるのでは? 違うかな(?)

回答No.1

setTimeout()、setInterval()を使って定期的に呼び出すか、 これらの関数を使ってsleep関数を実装するのがベストです。 細かく言うと上記スクリプトの実行時間も考慮に入れて実装しないと、ほんの少しだけ時間がズレます。 といっても0.1秒とかそれくらいのオーダーですけど。

関連するQ&A

  • このスクリプトを一定時間ごとに実行させるにはどうしたらいいですか?

    このスクリプトを一定時間ごとに実行させるにはどうしたらいいですか? 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);

  • 初心者です。Java scriptでの引数の使いかたについての質問です

    初心者です。Java scriptでの引数の使いかたについての質問です 初心者です。Java scriptでの引数の使いかたについての質問です。下記でやりたいことは、 requestText関数の引数02とか03を、java script なかの httpのアドレスの中のabに記入するには どうしたらいいかということです。あるいは、そうしたことが出来るのでしょうか。 <input type="button" value="02" onclick="requestText(02)"> <input type="button" value="03" onclick="requestText(03)"> function requestText(ab){ var ajax = new Ajax.Request("http://www.geocities.jp/abate/ab.html", {method: "GET", onSuccess: gotData}); function gotData(xmlhttp) { document.getElementById("a02").innerHTML = xmlhttp.responseText; } }

  • prototype.jsのAjax.Requestでeventを引数にしたのですが

    prototype.jsのAjax.Requestといつ便利な関数がありますが onComplete時の引数にeventオブジェクトを設定したらIE7では eventオブジェクトが引き継げませんでした。 たとえばこのようなメソッドで function ajax_request(url, params, method, ele1, ele2){ var nt = new Date(); var pr = params + "&nt=" + nt.getTime(); var a = new Ajax.Request( url, { method: "get", parameters: pr, onComplete: function(request){ method(request, ele1, ele2); } } ) }; ele1にeventオブジェクトを設定し、methodを実行しても デバックで、ele1.typeが何も表示されませんでした。 firefox2.0だと「click」など正しく表示もされオブジェクトが引き継がれておりました。 何が問題なのでしょうか?それともIE7ではeventオブジェクトを引き継ぐことは出来ないのでしょうか?

  • ajaxでtxtを取得する

    基本的なことかもしれませんが、質問します。 prototypeのライブラリを使ってajaxに挑戦しています。 ******************** var D = { method : "get", onSuccess : function(){...} }; new Ajax.Request("dara.txt", D); ******************** この方法だと、キャッシュ(?)を読み込んでしまうのか、 cgiでの変更点がすぐに反映されてこないので、このようにしました。 ******************** var D = { method : "get", parameters : "n=" + Math.random(), //←ここを追加 onSuccess : function(){...} }; new Ajax.Request("dara.txt", D); ******************** これで、毎回ちゃんとサーバーから読み込むようになりましたが、 このスクリプトを実行するたびにインターネット一時ファイルに保存されるので、 ものすごい数のテキストファイルが保存されてしまいます。 毎回サーバーから読み込んで、且つ、一時ファイルに残さない方法をご存知の方は、ご教示願います。

    • ベストアンサー
    • AJAX
  • jQueryを使った時とmootoolsを使った時のローカルでの動作の違い

    jqueryの場合は function open(){ $(id).load(path); } のようにするとローカル環境でもpathで指定したファイルを読み込んでくれますが、mootoolsの場合は function open(){ new Ajax(path, {method: 'get', update: $(id)}).request(); } のようにするとローカルでは動作しません。 現在はそれぞれどのような動きをしているのかわからない状態です。 jqueryは極力使わずにローカルで動作するようにしたいのですが、どのようにすればいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • AJAX
  • Ajaxのエンコードで

    私はshift_JISで作成したCGIのページがあるのですが、 Ajaxを導入しようとしたときに、Ajaxというか Javascriptでは、utf-8しか認識しないととあるサイトに書いてあったのですが、 そのCGIのページをphpに変更するにはものすごく多大な時間が 必要になってしまうんですが、CGIをutf-8仕様にするのも大変です AjaxでShift_JISに変換するような事はできませんでしょうか? http://javascriptist.net/ref_prototype/ajax.periodicalupdater.html のサイトに乗っている <script type="text/javascript" src="/js/prototype.js"></script> <script type="text/javascript"> var myajax; function execute() { myajax = new Ajax.PeriodicalUpdater( "container", "./member.cgi", { "method": "get", "parameters": "id=$id", frequency: 5, // 5秒ごとに実行 onSuccess: function(request) { // 成功時の処理を記述 // alert('成功しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); // ↓IEでもキャッシュを読み込まずに毎回リモート接続を実行するためのコード(パラメータの書き換え) var str = myajax.options.parameters; var hash = str.parseQuery(); hash["ajax_request_id"] = Math.random(); hash = $H(hash); myajax.options.parameters = hash.toQueryString(); }, onComplete: function(request) { // 完了時の処理を記述 // alert('読み込みが完了しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); }, onFailure: function(request) { alert('読み込みに失敗しました'); }, onException: function (request) { alert('読み込み中にエラーが発生しました'); } } ); } </script> を使用して自動更新をしようと思っているのですが

  • proototype.jsでのデータ取得について

    prototype.jsを使っております。 下記のようなコードでsetFeed.phpよりデータを取得しているのですが、allTextに代入しています。 これをdisplayData外で扱うにはどうしたらいいでしょうか? 特別なreturnの仕方があるのでしょうか? 解決法お教え頂ければ、幸いです。 new Ajax.Request('setFeed.php', { method: 'get', onComplete: displayData }); function displayData(responseHttpObj) { allText = responseHttpObj.responseText; }

  • [prototype.js] Ajax.Requestの取得データをコールバック関数外で取得する方法

    下記のコードを実行すると、 'undefined' 'hello' と表示されます。 (A)の箇所でグローバル変数gTestに'hello'が格納されている事を期待するのですが、undefinedとなります。 どういった理由でこうなるのでしょうか? また、onCompleteで定義した処理内で、 値をグローバル変数に格納するにはどのような方法がありますか? 何卒よろしくお願い致します。 -- <script src="/js/prototype.js" type="text/javascript"></script> <script type="text/javascript"> var gTest; function load() { new Ajax.Request('http://~/', { method: 'get', onComplete: displayData }); alert(gTest); //(A)undefinedと表示 } function displayData(httpObj) { gTest = 'hello'; alert(gTest); //(B)helloと表示 } load(); </script> --

  • AJAXでformから値を飛ばす

    AJAXを勉強してます。 formから値を飛ばす事はできたのですが、 直リンクというのはできないのでしょうか? uri ="http://www.○○○.cgi";の部分に直のアドレスを入れたいのですが、教えていただけないでしょうか? よろしくお願いいたします。 <script src="prototype.js"></script> <script> function dosubmit( ) { uri ="http://www.○○○.cgi"; new Ajax.Updater( 'result', 'uri', { method: 'post', parameters: $('myform').serialize() } ); $('myform').reset(); } </script>

  • ajaxでエラー処理

    お世話になります。 prototype.jsを使ってajaxのエラー処理を考えております。 そこで質問なのですが、以下のソースで OK.phpでは正常に処理が行われ、 NG.phpでは強制的にonFailure処理を行わせたいと考えております。 PHP側(NG.php)で、操作出来ませんでしょうか? よろしくお願いいたします。 <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> <!-- function ajax(fName) { var filename = fName + "?cache="+(new Date()).getTime(); new Ajax.Request(filename, { method: "get", onSuccess: displayData, onFailure: displayError }); } function displayData(httpObj) { $("result").innerHTML = httpObj.responseText; } function displayError(httpObj) { $("errMsg").innerHTML = httpObj.responseText; } // --> </script> </head> <body> <input type="button" value="正常処理" onClick="ajax('OK.php')"><br> <input type="button" value="エラー処理" onClick="ajax('NG.php')"><br> <div id="result"></div> <div id="errMsg"></div> </body> </html>

専門家に質問してみよう