4D v16.3Webエリアのプログラムによる管理 |
||
|
4D v16.3
Webエリアのプログラムによる管理
Webエリアのプログラムによる管理
このテーマのコマンドは、Webエリアタイプのフォームオブジェクトをプログラミングによって管理するために使用します。 WebエリアはあらゆるタイプのWebコンテンツ(*)を4D環境で表示します。静止画や動画を含むHTMLページ、ファイル、ピクチャ、 Javascript などです。以下のピクチャはフォームに格納されているWebエリアで、HTMLページを表示しています。 (*) しかしながら、WebプラグインとJavaアップレットの使用は推奨されていません(Webエリアの利用に際する注意点を参照して下さい)。 Webエリアテーマのコマンドに加え、いくつかの標準アクションやフォームイベントを使用して、デベロッパはこれらのWebエリアの機能をコント ロールすることができます。特定の変数を用いると、エリアと4D環境の間での情報交換が可能となります。つまり、これらのツールを利用すると、フォーム上 にベーシックなWebブラウザを構築することができるのです。 Webエリアは、4Dフォームエディタのオブジェクトバーにあるプラグインエリア/サブフォームボタンに追加された新しい項目を使用して作成されています (詳細はデザインリファレンスマニュアルのWebエリアを参照してください) 。 注: 埋め込みWebレンダリングエンジンを使用したWebエリアを新規プロセスで表示した場合 (具体的には New process コマンドで作成されたものついて)、正確な表示を保証するためにstack 引数にデフォルト値(0)を使用する必要があります。 他の動的なフォームオブジェクトのように、Webエリアはオブジェクト名とテキスト型の変数名を持ちます。これらはWebエリアをプログラミングに よって処理する際に使用されます。 特にWebエリアに対して OBJECT SET VISIBLE コマンドと OBJECT MOVE コマンドを使用することができます。 注: Webエリアに割り当てられるテキスト変数は参照を格納していません。そのためメソッドの引数として渡すことはできません。例えばWebエリアにMyAreaという変数名が割り当てられているとき、以下のコードを使用することはできません。 Mymethod(MyArea) Mymethodコード WA REFRESH CURRENT URL($1) // 動作しない このタイプのプログラミングに対しては、ポインタを使用する必要があります。 Mymethod(->MyArea) Mymethodコード WA REFRESH CURRENT URL($1->) // 動作する 標準的なオブジェクト変数に加え (前述の項目を参照) 、指定された2つの変数が、自動的にそれぞれのWebエリアに割り当てられます。
必要に応じてこれらの名前を変更することも可能です。これらの変数はプロパティリストからアクセスできます。 URL変数は文字列タイプです。この変数にはWeb エリアにロードされたURL またはロード中のURL が格納されます。 変数とWeb エリア間の連携は双方向で行われます。
URL 変数とWA OPEN URL コマンド URL 変数はWA OPEN URLコマンドと同じ効果をもたらします。しかしながら以下の違いに注意してください。
進捗変数は倍長整数タイプです。この変数には0 から100 までの値が格納され、この数値はWeb エリアに表示されるページのロードされたパーセンテージを表します。 Webエリアで実行されるJavaScripeコードから4Dメソッドを呼び出して、戻り値を取得することができます。 重要: この機能はWebエリアが埋め込みWebレンダリングエンジンを使用している場合に限り、使用可能です。 4DメソッドをWebエリアから呼び出せるようにするためには、エリアのプロパティリスト内の、4Dメソッドコールを許可のオプションにチェックをする必要があります:
注: このオプションは、埋め込みWebレンダリングエンジンを使用のオプションにチェックをしている場合のみ有効です。 このプロパティがチェックされている場合、特別なJavaScriptオブジェクト($4d)がWebエリア内に表示され、これを使用して4Dプロジェクトメソッドの呼び出しを管理することが出来るようになります。 4Dメソッドコールを許可のオプションにチェックがされている場合、4Dの埋め込みWeb Kitは、"."オブジェクト記法を使用することによって4Dプロジェクトメソッドと使用できる$4dというJavaScriptオブジェクトをエリアに提供します。 例えば、HelloWorldという4Dメソッドを呼び出す場合には、以下の宣言を実行するだけです: $4d.HelloWorld(); 警告: JavaScriptは大文字小文字を区別するので、この場合、オブジェクトの名前は$4d (dは小文字)であることに注意して下さい。 4Dメソッドへの呼び出しのシンタックスは以下の様になります: $4d.4DMethodName(param1,paramN,function(result){})
today という名の4Dプロジェクトメソッドがあり、そのメソッドは引数を受け付けず、カレントの日付を文字列として返す場合について考えてみます。 today メソッドの4D コードは以下の様になります: C_TEXT($0) Webエリアでは、 4D メソッドは以下のシンタックスで呼び出し可能です: $4d.today() この4Dメソッドは引数を何も受け取りませんが、$0の値を、4Dによって呼び出されたコールバック関数へとメソッドの実行後に返します。 HTMLページのコードは以下の様になります: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> $4d.today(function(dollarZero) { var curDate = dollarZero; document.getElementById("mydiv").innerHTML=curDate; }); </script> </head> <body>Today is: <div id="mydiv"></div> </body> </html> calcSum という4Dプロジェクトメソッドがあり、そのメソッドが($1...$n)という引数を受け取り、その合計を$0に返すという場合について考えます: calcSum メソッドの4D コードは以下の様になります: C_REAL(${1}) // n個の実数型の引数を受け取ります。 Web エリア内で実行されるJavaScriptコードは以下の様になります: $4d.calcSum(33, 45, 75, 102.5, 7, function(dollarZero) { var result = dollarZero // result is 262.5 }); 特定のフォームイベントは、Webエリアをプログラミングで管理するこを目的としています。すなわち、リンクの起動に関連しています:
更に、Webエリアは以下の汎用フォームイベントをサポートしています:
これらのイベントに関する詳細は、Form event コマンドの記述を参照してください。 4D v14では、フォームの Web エリア内で Web インスペクターを見たり使用したりすることが出来るようになりました。Web インスペクターは埋め込みWebエンジンによって提供されているデバッガーです。Webページの情報の、コードとフローを解析します。 Web エリア内でWebインスペクターを表示させるためには、以下の手順に従ってください:
上記の手順を踏んで設定を完了すると、エリア内のコンテキストメニュー内に要素の詳細を表示という新しいオプションが追加されているはずです: このオプションを選択すると、Webインスペクターウィンドウが表示されます。 このWeb インスペクターは、埋め込みWebレンダリングエンジンに含まれています。このデバッガーの機能の詳細に関しては、Webレンダリングエンジンより提供されているドキュメントを参照して下さい。 フォームが実行されると、他のフォームエリアと対話することを可能にする、標準のブラウザインタフェース機能がWeb エリア中で利用可能になります。
ウィンドウの再描画機構に関する理由から、サブフォームにWebエリアを挿入する場合には以下の制約がつきます:
Windows では、Web エリアから、同じ4D アプリケーションで起動されているWeb サーバへのアクセスはお勧めできません。これを行うとコンフリクトが発生し、アプリケーションがフリーズすることがあります。もちろん他の4D から4D Server のWeb エリアにアクセスすることはできます。自身のWeb サーバにアクセスできないということです。 WebエリアでのWebプラグインとJavaアップレットの使用は推奨されていません。何故なら、これらは(特にイベント管理レベルにおいて)4Dのオペレーションを不安定にするおそれがあるからです。 Mac OS 上のWeb エリアで、プログラムにより処理されるURL はプロトコルで開始されていなければなりません。つまり"www.mysite.com" ではなく"http://www.mysite.com" 文字列を渡さなければならないということです。
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |