mxsdoc

JavaScriptRunner.ms

依存

struct JavaScriptRunnerStruct

MAXScriptからJavaScriptを実行する。

補足

ECMAScript5に対応するためにはWebBrowserのドキュメントモードが11以上でなければならない。
ドキュメントモードの明示的な指定はHTMLファイルに以下のmeta要素を記述することで可能。

<meta http-equiv='x-ua-compatible' content='ie=edge'>
通知
通知名 通知データ タイミング
#DocumentCompleted 自己インスタンス WebBrowserDocumentCompletedイベント発生直後

public _CP1_

プロパティ
<String>

作成パラメータ1。JavaScriptを定義したHTMLファイルのURI文字列。

private id

プロパティ
<String>

グローバル変数名に使用する一意の識別子。

private handlerName

プロパティ
<String>

イベントハンドラを格納するグローバル変数の名前。

private instanceName

プロパティ
<String>

自己のインスタンスを格納するグローバル変数の名前。

private uri

プロパティ
<DotNetObject:System.Uri>

JavaScriptを定義したHTMLファイルのURI。

private uriClass

プロパティ
<DotNetClass:System.Uri>

private pathUtility

プロパティ
<Struct:PathUtilityStruct>

private webBrowser

プロパティ
<DotNetObject:System.Windows.Forms.WebBrowser>

public fn Activate

uriのHTMLファイルを読み込み、読み込みの完了をオブザーバに通知する。

戻り値
<OkClass>
補足

実行時の大まかな処理の流れは以下のようになる。

  1. JavaScriptRunnerのインスタンスを生成

  2. HTMLの読み込み完了を受けるイベントハンドラを登録

  3. Activateメソッドの呼び出しによりHTMLの読み込みを開始

  4. HTMLの読み込み完了後、非同期処理によりイベントハンドラが呼ばれる

  5. 登録したオブザーバに読み込み完了を通知

  6. 通知を受け取ったオブザーバ内でInvokeメソッドを呼び出して任意のJavaScript関数を実行。

  7. イベントハンドラを登録解除し、一連の処理に使用したグローバル変数を削除

利用者側はオブザーバがエントリポイントとなるように設計しなければならない。
具体的な実装例はテストを参照すること。

public fn DocumentCompleted

WebBrowserDocumentCompletedイベントに登録するイベントハンドラ。

戻り値
<OkClass>
補足

通知完了後にグローバル変数を削除する。

public fn Eval

JavaScriptのeval関数を実行する。

パラメータ
input
<String>

JavaScriptコード。

戻り値
<Any>

public fn GetDocumentMode

WebBrowserのドキュメントモードを取得する。

戻り値
<Integer>

public fn GetUri

現在のuriを取得する。

戻り値
<DotNetObject:System.Uri|UndefinedClass>

public fn GetUserAgent

WebBrowserのユーザエージェント文字列を取得する。

戻り値
<Integer>

public fn Install

インストールする。

戻り値
<OkClass>
補足

静的メソッド。

public fn Invoke

uriのHTMLファイルに定義されたJavaScript関数を実行する。

パラメータ
methodName
<String>

関数名。

パラメータ
arguments
<Array[<Any>]>

関数に渡す引数。

戻り値
<Any|UndefinedClass>

JavaScript関数の実行結果。ページが読み込まれていない場合はundefinedを返す。

public fn SetUri

HTMLファイルのパスを設定する。

パラメータ
input
<String>

パス文字列。

戻り値
<DotNetObject:System.Uri>

public fn Uninstall

アンインストールする。

戻り値
<OkClass>
補足

静的メソッド。

private fn defineVariableNames

イベントハンドラ、およびインスタンスの格納先となるグローバル変数の名前を決定する。

戻り値
<OkClass>

private fn dispose

イベントハンドラの削除、およびグローバル変数の削除を行う。

戻り値
<OkClass>

private fn generateId

システム時間を基に11桁の数字文字列を生成する。

戻り値
<String>

private fn isInstanceOfHtmlDocument

パラメータ
obj
<Any>
戻り値
<BooleanClass>

private fn isInstanceOfUri

パラメータ
obj
<Any>
戻り値
<BooleanClass>

private fn isValidHandler

戻り値
<BooleanClass>

private fn isValidInstance

戻り値
<BooleanClass>

private fn registerGlobals

自己のインスタンスとイベントハンドラのグローバル変数を登録する。

戻り値
<OkClass>

private fn unregisterGlobals

登録したグローバル変数を削除する。

戻り値
<OkClass>

private version

プロパティ
<Array[<Integer>]>

バージョン番号。メジャー、マイナー、パッチの順。

public fn StructName

戻り値
<Name>

public fn Dump

パラメータ
indent:
<String>
パラメータ
out:
<FileStream|StringStream|WindowStream>

出力先。既定値はlistener

戻り値
<OkClass>

public fn Equals

パラメータ
obj
<Any>
戻り値
<BooleanClass>
補足

大文字と小文字を区別する。

public fn GetVersion

戻り値
<Array[<Integer>]>

public StateChanged

プロパティ
<Struct:ObservableStruct>