JavaScriptの直接実行
このページの目的
前のページでは、Rice経由でJavaScriptコードを実行する方法について説明しました。このページでは、JavaScriptを直接実行する方法を学んでいきます。
目次:
ファイルドロップ
スクリプトタイルに.jsファイルをドロップすることでJavaScriptを実行できます。
スクリプトタイルとは、ブラウザ右側の彩色された領域です。左のタイルにドロップすればMain-ブラウザで、右ならSub-ブラウザで実行されます。
ファイル選択ダイアログ
ファイル選択ダイアログから.jsファイルを選択することでも実行できます。ファイル選択ダイアログは、Alt + Rキーかスクリプトタイルをクリックすることで開きます。
再実行
Alt + Eキーで前回実行されたスクリプトが再実行されます。
即時関数化
直接実行では、指示されなければJavaScriptコードの即時関数化は行われませんが、前のページで述べたように即時関数化には様々な利点があります。
そこで、直接実行にも即時関数化の方法が用意されています。直接実行ではJavaScriptコードの中に命令を直接書き込むことで即時関数化を行います。
"///immed"と"///async"が即時関数化命令です。JavaScriptコードの先頭が、これらの文字列ならば即時関数化が行われます。
1: | alert(token); |
上記のJavaScriptコードに///immedを付与します。
1: | ///immed |
2: | alert(token); |
即時関数化は以下の様になります。1行目と4行目が付加されます。
1: | (function(token){ |
2: | ///immed |
3: | alert(token); |
4: | }("0f8fbd59d9cb769fa16570867728950e")); |
上記のJavaScriptコードに///asyncを付与します。
1: | ///async |
2: | alert(token); |
即時関数化は以下の様になります。1行目と4行目が付加されます。
1: | (async function(token){ |
2: | ///async |
3: | alert(token); |
4: | }("0f8fbd59d9cb769fa16570867728950e")); |
ファイルI/O
直接実行ではJavaScriptから返り値を受け取ることができません。その代わりに簡単なファイルI/Oが拡張機能として用意されています。
JavaScript : window.cooker.storage オブジェクト
1: | Write(token, filename, data, append) | ファイルにテキストデータを書き出します。非同期関数です。 |
2: | Read(token, filename) | ファイルからテキストデータを読み出します。非同期関数です。 |
ファイル書き出し:
1: | window.cooker.storage.Write(token, "example.txt", "data string", true); |
第一引数 | token | 32桁の数値文字列。即時関数化で与えられます。 |
第二引数 | filename | ファイル名。 |
第三引数 | data | データ文字列。 |
第四引数 | append | 真偽値。追加=true。上書き=false。 |
第三引数にはファイル名だけを与えてください。ファイルI/OはCookerの実行ディレクトリ内のstorageサブディレクトリの直接の子ファイルに制限されています。
パスを与えた場合には、パスからファイル名だけを取り出してstorageサブディレクトリの直接の子ファイルと見なして処理します。
ファイル読み込み:
1: | let data = await window.cooker.storage.Read(token, "example.txt"); |
第一引数 | token | 32桁の数値文字列。即時関数化で与えられます。 |
第二引数 | filename | ファイル名 |
ファイル名に注意してください。Write()と同様に制限されています。
ファイル内のデータを一括して取り出すことに注意してください。
前のページで説明した他の拡張機能も同じように使用できます。