ヘッダーをスキップ
Oracle® Application Express APIリファレンス
リリース4.2 for Oracle Database 12c
B71340-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

13 APEX_JAVASCRIPT

APEX_JAVASCRIPTパッケージには、動的なJavaScriptコードをHTTP出力に追加するためのユーティリティ・ファンクションが用意されています。通常、このパッケージはプラグイン開発に使用されます。

トピック:

ADD_3RD_PARTY_LIBRARY_FILEプロシージャ

このプロシージャは、サード・パーティのJavaScriptファイルをロードするためのスクリプト・タグを追加し、アプリケーションに関して指定したコンテンツ配信ネットワークも考慮します。サポートされるライブラリは、jQuery、jQueryUIおよびjQuery Mobileです。

構文

add_3rd_party_library_file ( 
    p_library in varchar2, 
    p_file_name in varchar2, 
    p_directory in varchar2 default null, 
    p_version in varchar2 default null ); 

パラメータ

表13-1に、ADD_3RD_PARTY_LIBRARY_FILEプロシージャで使用可能なパラメータを示します。

表13-1 ADD_3RD_PARTY_LIBRARY_FILEパラメータ

パラメータ 説明

p_library

c_library_*定数のいずれかを使用します。

p_file_name

バージョン、.minおよび.jsを含めずにファイル名を指定します。

p_directory

ファイルp_file_nameがあるディレクトリ(オプション)。

p_version

値が指定されていない場合、同じバージョンのApplication Expressの値が使用されます(オプション)。


この例では、jQuery UIのドラッグ可能な機能のJavaScriptファイルをロードします。

apex_javascript.add_3rd_party_library_file (
     p_library   =>apex_javascript.c_library_jquery_ui,
     p_file_name => 'jquery.ui.draggable' )

ADD_ATTRIBUTEファンクションのシグネチャ1

このファンクションは、属性と、その属性の二重引用符で囲まれたエスケープされたテキストを戻します。


注意:

このファンクションは、HTMLタグはエスケープしません。HTMLタグがJavaScriptオブジェクトの属性の割当てに悪影響を与えないようにするだけです。XSS(クロスサイト・スクリプティング)攻撃を防ぐには、SYS.HTF.ESCAPE_SCをコールして、HTMLページに文字列を差し込む際に、埋め込まれたJavaScriptコードが実行されるのを防ぐ必要もあります。

構文

APEX_JAVASCRIPT.ADD_ATTRIBUTE (
    p_name       IN VARCHAR2,
    p_value      IN VARCHAR2,
    p_omit_null  IN BOOLEAN:=TRUE,
    p_add_comma  IN BOOLEAN:=TRUE)
RETURN VARCHAR2;

パラメータ

表13-2では、ADD_ATTRIBUTEファンクションのシグネチャ1で使用可能なパラメータについて説明します。

表13-2 ADD_ATTRIBUTEのシグネチャ1のパラメータ

パラメータ 説明

p_name

JavaScriptオブジェクト属性の名前。

p_value

JavaScriptオブジェクト属性に割り当てられるテキスト。

p_omit_null

TRUEを設定すると、p_valueが空の場合にNULL.が戻されます。

p_add_comma

TRUEを設定すると、戻される値の後にカンマが追加されます。


addEmployee JavaScriptファンクションへのコールを追加し、様々な属性値を持つJavaScriptオブジェクトを渡します。このコールの出力は、次のようになります。

addEmployee(
  {"FirstName":"John",
   "LastName":"Doe",
   "Salary":2531.29,
   "Birthday":new Date(1970,1,15,0,0,0),
   "isSalesman":true
  });

最後の属性では、False(p_omit_null)とFALSE(p_add_comma)という組合せのパラメータを使用して、最後の属性が常に生成されるようにする必要があります。これによって、後続のカンマを追加する必要があるかどうかについて、他のパラメータを調べる必要がなくなります。

apex_javascript.add_onload_code (
    'addEmployee('||
        '{'||
        apex_javascript.add_attribute('FirstName',  sys.htf.escape_sc(l_first_name))||
        apex_javascript.add_attribute('LastName',   sys.htf.escape_sc(l_last_name))||
        apex_javascript.add_attribute('Salary',     l_salary)||
        apex_javascript.add_attribute('Birthday',   l_birthday)||
        apex_javascript.add_attribute('isSalesman', l_is_salesman, false, false)||
        '});' );

ADD_ATTRIBUTEファンクションのシグネチャ2

このファンクションは、属性とその属性の数値を戻します。

構文

APEX_JAVASCRIPT.ADD_ATTRIBUTE (
    p_name       IN VARCHAR2,
    p_value      IN NUMBER,
    p_omit_null  IN BOOLEAN:=TRUE,
    p_add_comma  IN BOOLEAN:=TRUE)
RETURN VARCHAR2;

パラメータ

表13-3では、ADD_ATTRIBUTEファンクションのシグネチャ2で使用可能なパラメータについて説明します。

表13-3 ADD_ATTRIBUTEのシグネチャ2のパラメータ

パラメータ 説明

p_name

JavaScriptオブジェクト属性の名前。

p_value

JavaScriptオブジェクト属性に割り当てられる数値。

p_omit_null

TRUEを設定すると、p_valueが空の場合にNULL.が戻されます。

p_add_comma

TRUEを設定すると、戻される値の後にカンマが追加されます。


「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。

ADD_ATTRIBUTEファンクションのシグネチャ3

このファンクションは、属性、およびJavaScriptのブール値のtrue、falseまたはnullを戻します。

構文

APEX_JAVASCRIPT.ADD_ATTRIBUTE (
    p_name       IN VARCHAR2,
    p_value      IN BOLLEAN,
    p_omit_null  IN BOOLEAN:=TRUE,
    p_add_comma  IN BOOLEAN:=TRUE)
RETURN VARCHAR2;

パラメータ

表13-4では、ADD_ATTRIBUTEファンクションのシグネチャ3で使用可能なパラメータについて説明します。

表13-4 ADD_ATTRIBUTEのシグネチャ3のパラメータ

パラメータ 説明

p_name

JavaScriptオブジェクト属性の名前。

p_value

JavaScriptオブジェクト属性に割り当てられるブール値。

p_omit_null

p_omit_nullにTRUEを設定すると、p_valueがNULLの場合、このファンクションはNULLを戻します。

p_add_comma

TRUEを設定すると、戻される値の後にカンマが追加されます。


「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。

ADD_ATTRIBUTEファンクションのシグネチャ4

このファンクションは、属性と、その属性の日付を戻します。p_valueがnullの場合は、値nullが戻されます。

構文

APEX_JAVASCRIPT.ADD_ATTRIBUTE (
    p_name       IN VARCHAR2,
    p_value      IN DATE,
    p_omit_null  IN BOOLEAN:=TRUE,
    p_add_comma  IN BOOLEAN:=TRUE)
RETURN VARCHAR2;

パラメータ

表13-5では、ADD_ATTRIBUTEファンクションのシグネチャ4で使用可能なパラメータについて説明します。

表13-5 ADD_ATTRIBUTEのシグネチャ4のパラメータ

パラメータ 説明

p_name

JavaScriptオブジェクト属性の名前。

p_value

JavaScriptオブジェクト属性に割り当てられる日付。

p_omit_null

p_omit_nullにTRUEを設定すると、p_valueがNULLの場合、このファンクションはNULLを戻します。

p_add_comma

TRUEを設定すると、戻される値の後にカンマが追加されます。


「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。

ADD_INLINE_CODEプロシージャ

このプロシージャは、インラインで含められるコード・スニペットをHTML出力に追加します。たとえば、新しいファンクションまたはグローバル変数宣言を追加する場合にこのプロシージャを使用できます。コードを実行する場合は、ADD_ONLOAD_CODEプロシージャを使用する必要があります。

構文

APEX_JAVASCRIPT.ADD_INLINE_CODE (
    p_code       IN VARCHAR2,
    p_key        IN VARCHAR2 DEFAULT NULL);

パラメータ

表13-6では、ADD_INLINE_CODEプロシージャで使用可能なパラメータについて説明します。

表13-6 ADD_INLINE_CODEのパラメータ

パラメータ 説明

p_code

JavaScriptコード・スニペット。「$s('P1_TEST',123);」など。

p_key

コード・スニペットの識別子。識別子を指定した場合、同じ名前のコード・スニペットがすでに追加されていると、新しいコード・スニペットは無視されます。p_keyがNULLの場合、スニペットは常に追加されます。


次の例では、JavaScriptファンクションinitMySuperWidgetをHTML出力に含めます。このプラグインがページで複数回使用され、add_inline_codeが複数回コールされた場合でも、すべてのコールがp_keyに対して同じ値を持つため、HTML出力に1回しか追加されません。

apex_javascript.add_inline_code (
    p_code => 'function initMySuperWidget(){'||chr(10)||
              '  // do something'||chr(10)||
              '};',
    p_key  => 'my_super_widget_function' );

ADD_LIBRARYプロシージャ

このプロシージャは、JavaScriptライブラリをロードするためのスクリプト・タグを追加します。ライブラリが追加されている場合、2回目は追加されません。

構文

APEX_JAVASCRIPT.ADD_LIBRARY (
    p_name                   IN VARCHAR2,
    p_directory              IN VARCHAR2,
    p_version                IN VARCHAR2 DEFAULT NULL,
    p_check_to_add_minified  IN BOOLEAN DEFAULT FALSE,
    p_skip_extension         IN BOOLEAN  DEFAULT FALSE,
    p_ie_condition           IN VARCHAR2 DEFAULT NULL,
    p_key                    IN VARCHAR2 DEFAULT NULL);

パラメータ

表13-7では、ADD_LIBRARYプロシージャで使用可能なパラメータについて説明します。

表13-7 ADD_LIBRARYのパラメータ

パラメータ 説明

p_name

JavaScriptファイルの名前。指定時に.jsを使用する必要はありません。

p_directory

JavaScriptライブラリをロードするディレクトリ。末尾のスラッシュを付ける必要があります。

p_version

バージョン識別子。

p_check_to_add_minified

TRUEの場合、プロシージャは.min拡張子の追加が適切かどうかをテストし、適切な場合は追加します。これは、アプリケーションがDEBUGモードで実行されていない場合に追加され、DEBUGモードでは省略されます。

p_skip_extension

TRUEの場合、拡張子.jsは追加されません。

p_ie_condition

Internet Explorerの条件として使用される条件。

p_key

ライブラリがすでにロードされているかどうかを示すために使用する名前。指定しなければ、p_directory||p_name||p_versionにデフォルト設定します。


次の例には、p_plugin.file_prefixで指定したディレクトリのJavaScriptライブラリ・ファイルmy_library.1.2.min.js(アプリケーションがDEBUGモードで実行されていない場合)またはmy_library.1.2.js(アプリケーションがDEBUGモードで実行されている場合)が含まれます。p_check_to_add_minifiedがTRUEに設定されているため、アプリケーションがDEBUGモードで実行されていない場合に、.min拡張子の追加が行われます。p_skip_extensionが指定されていないため、これを.jsにデフォルト設定します。また、p_keyが指定されていないため、キーはp_plugin.file_prefix||mylibrary.1.2にデフォルト設定します。

apex_javascript.add_library (
    p_name                  => 'mylibrary.1.2',
    p_directory             => p_plugin.file_prefix,
    p_check_to_add_minified => true );

ADD_ONLOAD_CODEプロシージャ

このプロシージャは、onloadイベントによって実行されるHTML出力にjavascriptコード・スニペットを追加します。同じキーを持つエントリが存在する場合、それは無視されます。p_keyがNULLの場合、スニペットは常に追加されます。

構文

APEX_JAVASCRIPT.ADD_ONLOAD_CODE (
    p_code           IN VARCHAR2,
    p_key            IN VARCHAR2 DEFAULT NULL);

パラメータ

表13-8では、ADD_ONLOAD_CODEプロシージャで使用可能なパラメータについて説明します。

表13-8 ADD_ONLOAD_CODEのパラメータ

パラメータ 説明

p_code

onloadイベントの間に実行されるJavaScriptコード・スニペット。

p_key

指定されたコード・スニペットを識別する任意の名前。名前を指定した場合、同じp_keyを持つコールが他になければ、このコード・スニペットが追加されます。p_keyがNULLの場合、コード・スニペットは常に追加されます。


JavaScriptコールinitMySuperWidget()をonloadバッファに追加します。このプラグインがページで複数回使用され、add_onload_codeが複数回コールされた場合でも、すべてのコールがp_keyに対して同じ値を持つため、HTML出力に1回しか追加されません。

apex_javascript.add_onload_code (
    p_code => 'initMySuperWidget();'
    p_key  => 'my_super_widget' );

ADD_VALUEファンクションのシグネチャ1

このファンクションは、二重引用符で囲まれたエスケープされたテキストを戻します。たとえば、"That\'s a test"のような文字列が戻されます。


注意:

このファンクションは、HTMLタグはエスケープしません。HTMLタグがJavaScriptオブジェクトの属性の割当てに悪影響を与えないようにするだけです。XSS(クロスサイト・スクリプティング)攻撃を防ぐには、SYS.HTF.ESCAPE_SCをコールして、HTMLページに文字列を差し込む際に、埋め込まれたJavaScriptコードが実行されるのを防ぐ必要もあります。

構文

APEX_JAVASCRIPT.ADD_VALUE (
    p_value          IN VARCHAR2,
    p_add_comma      IN BOOLEAN :=TRUE)
RETURN VARCHAR2;

パラメータ

表13-9では、ADD_VALUEファンクションのシグネチャ1で使用可能なパラメータについて説明します。

表13-9 ADD_VALUEのシグネチャ1のパラメータ

パラメータ 説明

p_value

エスケープされ、二重引用符で囲まれるテキスト。

p_add_comma

p_add_commaがTRUEの場合、後続のカンマが追加されます。


次の例では、onloadバッファにいくつかのJavaScriptコードを追加します。p_item.attribute_01の値を、まず、XSS攻撃を防ぐためにhtf.escape_scでエスケープし、apex_javascript.add_valueをコールしてJavaScript変数lTestに割り当てます。Add_valueは、値を適切にエスケープし、二重引用符で囲みます。カンマは不要なため、p_add_commaはFALSEに設定します。

apex_javascript.add_onload_code (
    'var lTest = '||apex_javascript.add_value(sys.htf.escape_sc(p_item.attribute_01), FALSE)||';'||chr(10)||
    'showMessage(lTest);' );

ADD_VALUEファンクションのシグネチャ2

このファンクションは、p_valueをJavaScriptの数値として戻します。p_valueがNULLの場合は、値nullが戻されます。

構文

APEX_JAVASCRIPT.ADD_VALUE (
    p_value          IN NUMBER,
    p_add_comma      IN BOOLEAN :=TRUE)
RETURN VARCHAR2;

パラメータ

表13-9では、ADD_VALUEファンクションのシグネチャ2で使用可能なパラメータについて説明します。

表13-10 ADD_VALUEのシグネチャ2のパラメータ

パラメータ 説明

p_value

JavaScriptの数値として戻される数値。

p_add_comma

p_add_commaがTRUEの場合、後続のカンマが追加されます。デフォルトはTRUEです。


「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。

ADD_VALUEファンクションのシグネチャ3

このファンクションは、p_valueをJavaScriptのブール値として戻します。p_valueがNULLの場合は、値nullが戻されます。

構文

APEX_JAVASCRIPT.ADD_VALUE (
    p_value          IN BOOLEAN,
    p_add_comma      IN BOOLEAN :=TRUE)
RETURN VARCHAR2;

パラメータ

表13-11では、ADD_VALUEファンクションのシグネチャ3で使用可能なパラメータについて説明します。

表13-11 ADD_VALUEのシグネチャ3のパラメータ

パラメータ 説明

p_value

JavaScriptのブール値として戻されるブール値。

p_add_comma

p_add_commaがTRUEの場合、後続のカンマが追加されます。デフォルトはTRUEです。


「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。

ADD_VALUEファンクションのシグネチャ4

このファンクションは、p_valueをJavaScriptの日付オブジェクトとして戻します。p_valueがNULLの場合は、値nullが戻されます。

構文

APEX_JAVASCRIPT.ADD_VALUE (
    p_value          IN NUMBER,
    p_add_comma      IN BOOLEAN :=TRUE)
RETURN VARCHAR2;

パラメータ

表13-12では、ADD_VALUEファンクションのシグネチャ4で使用可能なパラメータについて説明します。

表13-12 ADD_VALUEのシグネチャ4のパラメータ

パラメータ 説明

p_value

JavaScriptの日付オブジェクトとして戻される日付。

p_add_comma

p_add_commaがTRUEの場合、後続のカンマが追加されます。デフォルトはTRUEです。


「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。

ESCAPEファンクション

このファンクションはJavaScriptで使用されるテキストをエスケープします。このファンクションは次の置換を行います。

表13-13 置換する値の表

置換 置換後

<

\u003c

>

\u003e

\

\\

/

\/

"

\u0022

'

\u0027

タブ

\t

chr(10)

\n



注意:

このファンクションは、HTMLタグがJavaScriptオブジェクトの属性の割当てに悪影響を与えないようにするとともに、HTMLタグ「<」および「>」をエスケープします。その他のHTMLタグはエスケープされないため、XSS(クロスサイト・スクリプティング)攻撃を確実に防ぐには、SYS.HTF.ESCAPE_SCをコールして、HTMLページに文字列を差し込む際に、埋め込まれたJavaScriptコードが実行されるのを防ぐ必要もあります。

構文

APEX_JAVASCRIPT.ESCAPE (
    p_text  IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表13-14では、ESCAPEファンクションで使用可能なパラメータについて説明します。

表13-14 ESCAPEパラメータ

パラメータ 説明

p_text

エスケープされるテキスト。


onloadバッファにいくつかのJavaScriptコードを追加します。p_item.attribute_01の値は、まず、XSS攻撃を防ぐためにhtf.escape_scでエスケープし、引用符などの特殊文字がJavaScriptコードに悪影響を与えないようにapex_javascript.escapeでエスケープします。

apex_javascript.add_onload_code (
    'var lTest = "'||apex_javascript.escape(sys.htf.escape_sc(p_item.attribute_01))||'";'||chr(10)||
    'showMessage(lTest);' );