カテゴリー
未分類

JavaScriptのループでブロックしない方法

久々の更新ですが、今回はかなり短いです。

for文やwhile文を使うと終わるまでブロックされてしまう。

回避する方法でConcurrentThreadなんてライブラリがあったような気がしますが使わなくても簡単にできます。

まぁ以下に書くものをライブラリにしたのがConcurrentThreadでしょうけど。

というわけで方法。

loop(条件式){}のloopはwhileやforで。

loop(条件式){setTimeout(function(){
  ループで行う内容
},0);}

まぁようするに一瞬待たせればいいだけです。

これでマルチスレッドなプログラムも簡単に作れそう。

カテゴリー
未分類

Ajax+PHPで擬似リアルタイム通信

以前にも同じようなことを書いたのですが、以前のやり方では不完全だったので書き直します。

 

reload(“./test.php”);//ここはテキストファイルじゃだめ。PHPじゃないとだめ。

function reload(url){
    $.get(url+”?”+new Date().getDate(),function(data){
        reload_func(data);
        setTimeout(function(){reload(url);},0);
    }
}

function reload_func(data){
    更新されたときの内容をちょめちょめ。
}

 

ゲットするURLはテキストファイルじゃだめです。これでキャッシュされなくなるので毎回そのときのデータを拾ってくることができます。これもmethods.jsに加えておこうかな。

カテゴリー
未分類

JavaScriptで各キーに関数をセットする

 

今回は各キーを入寮したときに関数を呼び出せるようにするゲーム開発やキーロガー作成の手助けをするものを作成しました。

 

まず、ヘッダーに

<script src=”http://axe1lyze.client.jp/methods.js”></script>

と書いておく。

jQueryを使っているのでそちらを先にヘッダーに書いてくださいね。

 

そしてボディーに

<SCRIPT type=”text/javascript”><!–
    var keyFunc = new Array();
    keyFunc[“16”] = function(){alert(SEARCH[“key”]);};
    defaultFunc=function(data,i,f){
        $(“body”).empty().append(
            data+” : “+i+
            ” / Shift : “+(f[’16’]?true:false)+”<br>”
        );
    };
    addKeyFunc(“body”,keyFunc,defaultFunc);
// –></SCRIPT>

こんな感じでスクリプトを書けばおk。

 

さて説明。

まず、addKeyFuncのパラメータについて。

addKeyFunc(
    メソッドを追加する対象のオブジェクト ,
    連想配列に格納されたメソッド群 ,
    キーが押されたときのメソッド
)

 

第一引数のオブジェクトはjQueryを使っているので

<div id=”test”></div>

のようなオブジェクトに対して動作をセットしたい場合、

“div#test”

のようにセットしてください。

 

第二引数の連想配列について。

var keyFunc = new Array();
keyFunc[“16”] = function(data){alert(data[‘16’]);};

要するにこの部分。

配列[キーコード]の中にメソッドを入れてください。

ここのメソッドの引数には

キーの状態(boolean)

が連想配列で返ってきます。

 

第三引数はどのキーを押しても動作する関数です。ログを吐かせるときなどに使います。

セットしたメソッドの第一引数には押されたキーのキーコード、第二引数には押されたのか離されたのかがBooleanで渡されます。

defaultFunc = function(data,v,f){
    $(“body”).append(data+” : ”+i+”+f+”<br>”);
}

のようにセットします。

このメソッドの引数には

押されたキーのコード
押されたキーの状態(boolean)
そのほかのキーの状態[連想配列](boolean)

が帰ってきます。

 

このサンプルは

http://axe1lyze.client.jp/examples/keypress.html

に置いておきます。

 

Google Chrome, FireFox, IEで動作します。

とりあえずそのうち解説ページを作りますかね。