14.2 動的アクションの管理
動的アクションにより、開発者は、JavaScriptを必要としないで複雑なクライアント側の動作を宣言的に定義できます。
- 動的アクションについて
動的アクションは、JavaScriptを必要としないで複雑なクライアント側の動作を宣言的に定義する方法を提供します。動的アクションの作成ウィザードを使用して、定義された条件セットが発生したときに実行されるアクションを指定します。また、アクションの影響を受ける要素や、影響を受ける時期と影響も指定できます。 - 動的アクション・イベントについて
ページで発生するイベントに基づいて起動する動的アクションを定義できます。Oracle Application Expressには、ブラウザ・イベント、フレームワーク・イベント、コンポーネント・イベントおよびカスタム・イベントの4種類のカテゴリが含まれています。この項では、サポートされるすべてのイベントについて説明します(JavaScriptの内部イベント名をカッコで示します)。 - 動的アクションの作成
動的アクションの作成には、アクションが発生する時期(オプション条件を指定する)、実行されるアクションおよびアクションの影響を受ける要素を指定する手順が含まれます。プロパティ・エディタ属性の詳細は、属性を選択し、中央ペインで「ヘルプ」タブをクリックして、参照してください。 - 動的アクションの編集
動的アクションを作成した後、作成プロセス中に定義した属性を変更したり、プロセス中に指定できなかった属性を指定したり(「認可スキーム」の指定など)、追加のtrueアクションを追加できます。 - 動的アクションのイベント有効範囲の定義
動的アクションを作成した後、アクションの有効範囲を1回のみのトリガーとするか、現在のページの存続期間中とするか、トリガー要素が部分ページ・リフレッシュ(PPR)によって更新されるまでとするかを変更できます。 - 動的アクションの削除
動的アクションを削除するには、その動的アクションをページ・デザイナで選択して、コンテキスト・メニューから「削除」を選択します。 - 動的アクションを使用したJavaScriptのコールについて
動的アクションを作成することによって、JavaScriptコードを実行できます。 - 動的アクションのデバッグ
Oracle Application Expressで動的アクションをデバッグする方法について学習します。
関連項目:
親トピック: データベース・アプリケーション・コントロールの管理
14.2.1 動的アクションについて
動的アクションは、JavaScriptを必要としないで複雑なクライアント側の動作を宣言的に定義する方法を提供します。動的アクションの作成ウィザードを使用して、定義された条件セットが発生したときに実行されるアクションを指定します。また、アクションの影響を受ける要素や、影響を受ける時期と影響も指定できます。
動的アクションを使用するとき、ページに追加する動的アクションが多くなるほど全体のページ・サイズが大きくなることに注意する必要があります。これは、動的アクション・フレームワークでは、定義された各動的アクションについてクライアントへの追加コードを生成し、そのコードはクライアント内のフレームワークによってダウンロードおよび実行される必要があるためです。
動的アクションを実装するプロセスには、次のステップがあります。
-
ページ上で、対話グリッド列、アイテム、ボタン、リージョン、JavaScript式またはjQueryセレクタを編集または作成します。このコンポーネントは、起動される時期を定義する際、動的アクション内で参照されます。
-
アクションを起動するアプリケーション・ページから動的アクションを作成します。
-
動的アクションをテストするためにアプリケーションを実行します。
ヒント:
問題をデバッグする方法の詳細は、動的アクションのデバッグを参照してください。
動的アクションの例の表示
動的アクションの例を表示するには、サンプル・アプリケーションのサンプル動的アクションをインストールします。または、Oracle Learning Library (http://www.oracle.com/oll/apex)に移動します。表示されるフィールドに検索基準(dynamic actions
など)を入力して「検索」をクリックします。
親トピック: 動的アクションの管理
14.2.2 動的アクション・イベントについて
ページで発生するイベントに基づいて起動する動的アクションを定義できます。Oracle Application Expressには、ブラウザ・イベント、フレームワーク・イベント、コンポーネント・イベントおよびカスタム・イベントの4種類のカテゴリが含まれています。この項では、サポートされるすべてのイベントについて説明します(JavaScriptの内部イベント名をカッコで示します)。
ブラウザ・イベント
注意:
ページの現在のユーザー・インタフェース・タイプに応じて、表示されるイベントは異なります。別のタイプに対応するイベントを選択する場合、現在のタイプに対応しないものも含むすべてのイベントを表示する「非サポートの表示」を選択できます。
-
変更(
change
): コントロールが入力フォーカスを失い、フォーカスの取得後に値が変更された場合に起動します。 -
クリック(
click
): ポインティング・デバイスのボタンがトリガー要素上でクリックされたときに起動します。 -
ダブルクリック(
dblclick
): ポインティング・デバイスのボタンがトリガー要素上でダブルクリックされたときに起動します。 -
ダブルタップ(
apexdoubletap
): ポインタでダブルタップまたはダブルクリックを実行したときに起動します。 -
フォーカスを取得(
focusing
): ポインティング・デバイスまたは要素へのタブによる移動によってトリガー要素がフォーカスを受け取ったときに起動します。 -
キー・ダウン(
keydown
): キーボード上のキーが押されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが押された後に)取得するときにこのイベントを使用します。 -
キー・プレス(
keypress
): キーボード上のキーが押され、結果としてテキストが入力されたときに起動します。実際のテキスト入力を取得するときにこのイベントを使用します。 -
キー・リリース(
keyup
): キーボード上のキーが解放されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが解放された後に)取得するときにこのイベントを使用します。 -
フォーカスを失う(
focusout
): ポインティング・デバイスまたは要素からのタブによる移動によってトリガー要素がフォーカスを失ったときに起動します。 -
マウス・ボタン・プレス(
mousedown
): ポインティング・デバイスのボタンがトリガー要素上で押されたときに起動します。 -
マウス・ボタン・リリース(
mouseup
): ポインティング・デバイスのボタンがトリガー要素上で解放されたときに起動します。 -
マウス・エンター(
mouseenter
): ポインティング・デバイスがトリガー要素内に移動すると起動します。 -
マウス・リーブ(
mouseleave
): ポインティング・デバイスがトリガー要素外に移動すると起動します。 -
マウス・ムーブ(
mousemove
): ポインティング・デバイスがトリガー要素上にあるとき、移動すると起動します。 -
パン(
apexpan
): ポインタを押しながら水平方向に移動したときに起動します。 -
ページのロード(
ready
): ページがロードされるときに起動します。 -
ページのアンロード(
unload
): ページがアンロードされるときに起動します。 -
押す(
apexpress
): ポインタを押したまま250ミリ秒経過したときに起動します。 -
サイズ変更(
resize
): ブラウザ・ウィンドウがサイズ変更されるときに起動します。 -
リソースのロード(
load
): トリガー要素がウィンドウ要素の場合(「時期」属性の「JavaScript式」値にwindow
を使用)、ブラウザでドキュメント内のすべてのコンテンツ(ウィンドウ、フレーム、オブジェクトおよびイメージを含む)のロードが完了したときにイベントが起動します。その他の要素では、このイベントはURLに関連付けられた要素(イメージ、スクリプト、フレーム、iframe)にのみ使用できます。 -
スクロール(
scroll
): スクロール可能なトリガー要素がスクロールされるときに起動します。これは、ブラウザ・ウィンドウ(「時期」属性の「JavaScript式」値にwindow
を使用)、スクロール可能なフレーム、またはCSSプロパティのoverflow
がscroll
(要素の明示的な高さがコンテンツの高さよりも低いときはauto
)に設定されている要素が考えられます。 -
選択(
select
): ユーザーがテキスト・フィールドの一部のテキストを選択するときに起動します。 -
スワイプ(
apexswipe
): ポインタを水平方向に高速に移動したときに起動します。 -
タップ(
apextap
): ポインタで細かいタップまたはクリックを実行したときに起動します。
フレームワーク・イベント
-
リフレッシュ後(
apexafterrefresh
): トリガー要素がリフレッシュされた後に起動します。このイベントは、部分ページ・リフレッシュを実行し、このイベントを起動するトリガー要素にのみ有効です。これをサポートするネイティブ・コンポーネントは、「対話モード・レポート」、「クラシック・レポート」、「チャート」、「リスト・ビュー」およびカスケードLOVサポートが存在するすべてのアイテム・タイプです。プラグインでもこのイベントがサポートされる場合があります。refreshObject
オプションを指定したときは、apex.server.plugin
およびapex.server.process
APIでも、このイベントを送信できます。Oracle Application Express JavaScript APIリファレンスのapex.serverに関する項を参照してください -
ページの送信前(
apexbeforepagesubmit
): ページが送信される前に起動します。 -
リフレッシュ前(
apexbeforerefresh
): トリガー要素がリフレッシュされる前に起動します。このイベントは、部分ページ・リフレッシュを実行し、このイベントを起動するトリガー要素にのみ有効です。これをサポートするネイティブ・コンポーネントは、「対話モード・レポート」、「クラシック・レポート」、「チャート」、「リスト・ビュー」およびカスケードLOVサポートが存在するすべてのアイテム・タイプです。プラグインでもこのイベントがサポートされる場合があります。refreshObjectオプションを指定したときは、apex.server.plugin
およびapex.server.process
APIでも、このイベントを送信できます。Oracle Application Express JavaScript APIリファレンスのapex.serverに関する項を参照してください。 -
ダイアログのクローズ(
apexafterclosedialog
): Application Expressのダイアログを閉じたときに起動します。このイベントは、「ダイアログを閉じる」ページ・プロセスまたは「ダイアログを閉じる」動的アクションを使用してダイアログを閉じたときにのみ起動します。
コンポーネント・イベント
これらのイベントは、カスタム・イベントをトリガーする、アプリケーションで使用可能なコンポーネント(アイテム、リージョンまたは動的アクションのいずれか)が存在する場合にのみ使用できます。これらのイベントは、イベント名[コンポーネント名]の書式で表示され、たとえばShuttleネイティブ・アイテム・タイプによってトリガーされるChange Orderイベントは、Change Order [Shuttle]と表示されます。コンポーネントのイベントは、Oracle Application Expressに付属のネイティブ・コンポーネントまたはアプリケーションにインストールしたプラグイン・コンポーネントのいずれかからトリガーされます。
-
ネイティブ・コンポーネントによってトリガーされるイベント
これらは、イベント名[コンポーネント名]の書式になります。ネイティブ・コンポーネントで発生するイベントに関連したヘルプについては、
interactiveGrid
およびtreeView
を参照してください。Oracle Application Express JavaScript APIリファレンスのinteractiveGridおよびtreeViewを参照してください。 -
プラグイン・コンポーネントによってトリガーされるイベント
これらは現在のアプリケーションに追加されると使用可能になり、イベント名[コンポーネント名]の書式になります。プラグインが発生させるイベントに関連したヘルプについては、「共有コンポーネント」、「プラグイン」、「プラグイン名」、「ヘルプ・テキスト」にナビゲートして、プラグイン構成ページのヘルプ・テキストを参照してください(プラグイン作成者がここにドキュメントを格納している場合があります)。
-
カスタム・イベント:
「カスタム」を選択すると、カスタム・イベントを定義できる追加のフィールドが表示されます。これは、ネイティブまたはプラグインによって提供されるイベントが十分でない場合に役立ちます。
親トピック: 動的アクションの管理
14.2.3 動的アクションの作成
動的アクションの作成には、アクションが発生する時期(オプション条件を指定する)、実行されるアクションおよびアクションの影響を受ける要素を指定する手順が含まれます。プロパティ・エディタ属性の詳細は、属性を選択し、中央ペインで「ヘルプ」タブをクリックして、参照してください。
ページ・デザイナで動的アクションを作成するには:
関連項目:
親トピック: 動的アクションの管理
14.2.4 動的アクションの編集
動的アクションを作成した後、作成プロセス中に定義した属性を変更したり、プロセス中に指定できなかった属性を指定したり(「認可スキーム」の指定など)、追加のtrueアクションを追加できます。
動的アクションを編集するには、次のステップを実行します。
親トピック: 動的アクションの管理
14.2.5 動的アクションのイベント有効範囲の定義
動的アクションを作成した後、アクションの有効範囲を1回のみのトリガーとするか、現在のページの存続期間中とするか、トリガー要素が部分ページ・リフレッシュ(PPR)によって更新されるまでとするかを変更できます。
有効範囲を指定するには、次のステップを実行します。
親トピック: 動的アクションの管理
14.2.6 動的アクションの削除
動的アクションを削除するには、その動的アクションをページ・デザイナで選択して、コンテキスト・メニューから「削除」を選択します。
動的アクションを削除するには、次のステップを実行します。
親トピック: 動的アクションの管理
14.2.7 動的アクションを使用したJavaScriptのコールについて
動的アクションを作成することによって、JavaScriptコードを実行できます。
「JavaScriptコードの実行」と「値の設定」の動的アクションを作成することによって、JavaScriptコードを実行することもできます。クライアント側の条件タイプを「JavaScript式」に設定することにより、動的アクションの条件に対してJavaScriptコードを使用することもできます。
関連項目:
親トピック: 動的アクションの管理
14.2.8 動的アクションのデバッグ
Oracle Application Expressで動的アクションをデバッグする方法について学習します。
14.2.8.1 動的アクションのデバッグについて
Oracle Application Express内での動的アクションのデバッグは、他のデバッグと少し異なります。これは、動的アクション・フレームワーク内で実行される処理の多くが、サーバー側でなくクライアント側で実行されるためです。動的アクションをデバッグするには、ブラウザでJavaScriptコンソールがサポートされている場合、Oracle Application Expressがデバッグ情報をブラウザのJavaScriptコンソールに出力します(たとえば、FirebugがインストールされたFirefoxは、デバッグ情報を「Console」ペインに表示します)。デバッグ情報により、動的アクションが起動した時期、および動的アクションについての追加情報が次の形式で表示されます。
Dynamic Action Fired: [Dynamic Action name] ([Action name]) {JavaScript object containing all Dynamic Action information}
この形式によって、動的アクション名、トリガーされたアクションを示すアクション名、動的アクションに関する多くの情報(WHEN要素、影響を受ける要素、イベント・オブジェクト、動的アクションに関連付けられているデータなど)を含むJavaScriptオブジェクトを識別できます。
親トピック: 動的アクションのデバッグ