Webエリア
Webエリアは、静的および動的な HTMLページ、ファイル、ピクチャー、JavaScript などの様々な Webコンテンツをフォーム中で表示することのできるオブジェクトです。 Webエリアの描画エンジンは、アプリケーションの実行プラットフォームおよび 埋め込みWebレンダリングエンジンを使用 オプションの設定状態により異なります。
同じフォーム内に複数の Webエリアを配置できます。 しかしながら、Webエリアの挿入には いくつかの制約 がつく事に注意して下さい。
いくつかの専用の 標準アクション、多数の ランゲージコマンド、そして汎用および専用の フォームイベント を使用して、Webエリアの動作を制御することができます。 特別な変数を使用して、エリアと 4D環境間で情報を交換することも可能です。
特有のプロパティ
割り当てられる変数
Webエリアには 2つの特別な変数が自動で割り当てられます:
4D v19 R5 以降、Windows システムレンダリングエンジン を使用する Webエリアでは、進捗状況変数が更新されません。
Webレンダリングエンジン
Webエリアでは、2つの描画エンジン うちから使用するものを選択することができます。
"埋め込みWebレンダリングエンジンを使用" プロパティを選択している場合、"4Dメソッドコールを許可" プロパティが選択可能になり、また、macOS と Windows 上の動作が同様であるようにできます。 Webエリアがインターネットに接続されている場合には、最新のセキュリティアップデートの恩恵を受けられるため、システムレンダリングエンジンを選択することが推奨されます。
4Dメソッドコールを許可
4Dメソッドコールを許可 プロパティを選択している場合、Webエリアから 4Dメソッドを呼び出すことができます。
- この機能は Webエリアが 埋め込みWebレンダリングエンジンを使用 している場合に限り、使用可能です。
- このオプションは 4Dコードの実行を許可するため、セキュリティ上の理由から、アプリケーションによって生成されたページなど、信頼できるページに対してのみ有効にするべきです。
$4dオブジェクトの使用
4Dの埋め込みWebレンダリングエンジン は、$4d という JavaScriptオブジェクトをエリアに提供します。$4dオブジェクトと "." (ドット) オブジェクト記法を使用することによって、任意の 4Dプロジェクトメソッドを呼び出すことができます。
たとえば、HelloWorld
という 4Dメソッドを呼び出す場合には、以下の宣言を実行します:
$4d.HelloWorld();
JavaScript は大文字小文字を区別するため、オブジェクトの名前は $4d (dは小文字) であることに注意が必要です。
4Dメソッドへの呼び出しのシンタックスは以下のようになります:
$4d.4DMethodName(param1,paramN,function(result){})
-
param1...paramN
: 4Dメソッドに対して必要なだけ引数を渡すことができます。 これらの引数 は、JavaScript にサポートされている型であればどんなものでも渡せます (文字列、数値、配列、オブジェクト)。 -
function(result)
: 最後の引数として渡される関数です。 この "コールバック" 関数は、4Dメソッドが実行を終えると同時に呼び出されます。 この関数はresult
引数を受け取ります: -
result
: "$0" 式に返される、4Dメソッド実行の戻り値です。 戻り値は JavaScript でサポートされている型 (文字列、数値、配列、オブジェクト) のいずれかになります。C_OBJECT
コマンドを使用して、オブジェクトを返すことができます。
デフォルトとして、4Dは UTF-8 文字コードで動作しています。 (アクセントが付いた文字などの) 拡張文字を含むテキストを返す場合には、Webエリアで表示されるページの文字コードが UTF-8 に宣言されていることを確認してください。文字コードが UTF-8 でない場合、文字が正しく表示されない可能性があります。 この場合、以下の 1行を HTMLページに追加して文字コードを宣言してください:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
例題 1
today
という名の 4Dプロジェクトメソッドがあり、そのメソッドは引数を受け付けず、カレントの日付を文字列として返す場合について考えてみます。
today
メソッドの 4Dコードです:
C_TEXT($0)
$0:=String(Current date;System date long)
Webエリアでは、 4Dメソッドは以下のシンタックスで呼び出し可能です:
$4d.today()