プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > FileDownload > Macro > Ex: Command > JScriptEvaluate

 
 Ex:JScriptEvaluateコマンド
Download Top | Macro Top | Command | ExCommand  


 

書式


  Ex:JScriptEvaluate:   src=(javascript_source)   entry=(entry_function)   importSys=(bool_import_dll)   O:out=(output_var)   O:result=(result_var)  

src= : string, JavaScriptソースコード
entry= : string, 呼び出す関数名
importSys= : bool, .NETライブラリ(mscorlib.dll、System.dll)のインポート (省略時はfalse)
O:out= : string -or- int, JavaScript実行結果を設定する変数
O:result= : string -or- int, コマンド処理結果を設定する変数

src=で指定したJavaScriptソースコードをコンパイルし、それを entry=で指定した関数から実行し、結果を O:out=で指定した変数に設定します。

数値の結果が期待される場合は、 O:result= に int[ ] または intl[ ] の数値変数を指定します。
文字列の結果が期待される場合は、 O:result= に str[ ] または strl[ ] の文字列変数を指定します。

O:result= で、処理結果を設定する文字列変数(str[ ] または strl[ ])を指定します。
OK: の3文字で開始される文字列、または、 NG: の3文字で開始される文字列が設定されます。
O:result= の指定は省略することができます。

importSys=には、 "true" または "false" で指定します。
"true" の場合は、.NETのライブラリ mscorlib.dll 及び、System.dll をインポートします。 インポートされた場合、JavaScriptから.NETのライブラリ関数をcallすることが可能になります (mscorlib.dll、System.dll で提供されている関数に限ります)。
この指定は省略可能です。省略時は "false" (インポートしない) になります

 

記述例


例1:

int[1]に 6 が設定されます

src= には、関数の形で記述します。 次のように、 src= に数式だけを指定した場合はコンパイルエラーになります。


コンパイルエラー (entryで指定した関数が必要です)

変数を含まない単純な数式の結果を得たい場合は、 entry= に数式を指定します。 src= の指定は省略します。
次の例は、例1 と同じように 1+2+3 の結果を得ます。


int[1]に 6 が設定されます


変数を含む数式の場合は、 src= に関数の形式で記述します。

例2:

文字列変数 strl["結果"] に、65280 が設定されます


通常のJavaScriptと違い、宣言の無い変数は使えません(コンパイルエラーになります)。 使用する変数は全て事前に宣言しておく必要があります。
たとえば、例2 を次のように記述するのはエラーになります。


コンパイルエラー (変数 i, j が宣言されていない)


グローバルな変数は使用できません。 次の例は関数の外部で定義されている b64s の文字列が未定義になるので、コンパイルは成功しますが実行時にエラーになります。


実行エラー (b64sを参照できない)


次のように、パラメータの指定を必要とする関数でも、 entry= に指定することができます。
マクロ側の変数(str[ ], int[ ], etc) はJavaScript関数のパラメータとしては直接には使用できないので、 entry= に指定する単一の文字列として 予め展開しておく必要があります。

次の例は、JavaScript関数 aaa() と bbb() があり、bbb()の方をパラメータ付で呼び出したい場合です。 bbb()にはパラメータとして ローカル文字列変数strl[11] の内容を渡しています。


文字列 Alice をパラメータに実行

この例では、 strl["結果"] の変数に Hello Alice! の文字列が設定されます。

 

JavaScriptの関数の使用


例として、次のようなHTMLソースコードを考えます。


HTMLソースコードの一部

この3行のコードは、WebブラウザがJavaScriptを有効にしているときに、
  http://www.example.com/servlet/media
にHttp-Getでアクセスするものです。 パラメータは3つあり、1つは固定的に click=true ですが、 randomとmillisのパラメータ値はJavaScriptの関数を使って設定しています。

このような場合でも、このコマンドで実行させることに関して何も違いはありません。 関数の形に整形して評価する場合は コマンドパラメータの src= に、 直接に値を得る場合は entry= に指定します。
ここでは entry= に指定する例で説明します。

まず、文字列操作で HTMLから src= に指定されている部分だけを抜き出します。
次のような文字列(1行)になります。

http://www.example.com/servlet/media?click=true&random='+Math.floor(89999999*Math.random()+10000000)+'&millis='+new Date().getTime()+'

この前後に  ' 記号 を補完してJavaScript文字列を完成させると、次のような1行になります。

 'http://www.example.com/servlet/media?click=true&random='+Math.floor(89999999*Math.random()+10000000)+'&millis='+new Date().getTime()+'

これが、JavaScriptとして評価すべき内容です。
この全体を文字列として、Ex:JScriptEvaluateコマンドの entry= に指定します。
コマンドイメージは次のようなものになります。
(コマンドが長くなると読み難いので、一旦、 str["script"] の文字列変数に設定して、それをentry= に指定していますが、直接指定しても同じです)



【Note】   この4行を、テキストフォームをメモ帳モードで開いて貼り付け、 そのフォームのメニューから 「Macro」→ 「Run (表示している内容をマクロとして実行)」 で実行することで具体的な動作を確認することができます。

実行結果は次の2行のようなものになります。



[BACK]
プロセルピナ