English help on website



hidemaru.setTimeout(Ver9.24対応版)
目次JavaScript対応Hidemaruオブジェクト− setTimeout
setTimeoutメソッドは、一定時間経過後に1回だけ実行する関数を指定します。 [非同期]
clearTimeoutメソッドは、解除します。(後述)
js{
  id = hidemaru.setTimeout(function(){},1000);
}
パラメータ1(関数)
関数を指定します。

パラメータ2(数値型)
時間をミリ秒単位で指定します。

返り値(数値型)
固有のIDが返ります。


WebView2では、ブラウザとしてのwindow.setTimeoutがありますが、hidemaru.setTimeoutはスクリプトエンジンを問わず使うことができます。
JScriptでも使えます。

ブラウザとしてのwindow.setTimeoutは、フォーカスが無いときは間隔が広まったり休止したり、必ずしも時間通りに来るとは限りらない仕様となっているようです。
特に秀丸マクロ内のWebView2のブラウザ部分は見えないので、window.setTimeoutはほぼ役に立たないと思ってもらったほうがいいです。
秀丸マクロのグローバルのsetTimeoutはありません。グローバルでsetTimeoutを書くと、WebView2ではwindow.setTimeoutになります。
どの場面でも、hidemaru.setTimeoutと書けば大丈夫です。
debuginfo(2);

jsmode "WebView2";
js{
  id = hidemaru.setTimeout(function(){console.log(1);},1000); //OK
  
  id = window.setTimeout(function(){console.log(2);},1000); //非推奨
  id = setTimeout(function(){console.log(3);},1000); //非推奨 (window.setTimeoutと同じ)
  
}
jsmode "JScript";
js{
  id = hidemaru.setTimeout(function(){console.log(4);},1000); //OK
  
  //エラー id = window.setTimeout(function(){},1000); //(windowは無い)
  //エラー id = setTimeout(function(){},1000); //(hidemaruGlobal.setTimeoutは無い)
}
endmacro;

clearTimeoutは、setTimeoutの返り値で得られたIDを指定して、実行されるのを解除します。既に実行された後では効果はありません。
js{
  id = hidemaru.setTimeout(function(){},1000);
  hidemaru.clearTimeout(id);
}