basyura's blog

あしたになったらほんきだす。

setInterval

内部ロジックをちょっといじったら急に security error が出だしたからなんだろうと思ったら制限があるみたいね。

関数参照またはオブジェクトと共にハンドラ関数として渡されるストリングを置き換えます。例えば、次のようなステートメントを

setTimeout("alert('Timeout')", 10);

次のように置き換えます。

setTimeout(alert('Timeout'), 10); 

または、関数に必要な this オブジェクトが呼び出し元によって設定される場合に、次のようなステートメントを

this.appTimer = setInterval("obj.customFunction();", 100);

次のステートメントに置き換えます。

var _self = this; 
this.appTimer = setInterval(function(){obj.customFunction.apply(_self);}, 100);
[http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f0e.html#WS5b3ccc516d4fbf351e63e3d118666ade46-7efb:title= setTimeout() および setInterval()[setTimeout() および setInterval()]]

理由は

アプリケーションサンドボックスで実行するコードでは、ドキュメントの load イベントが開始し、任意の load イベントハンドラが終了すると、ストリングの評価および実行を伴うほとんどの操作が制限されます。

納得。