APEX_JAVASCRIPT
パッケージには、動的なJavaScriptコードをHTTP出力に追加するためのユーティリティ・ファンクションが用意されています。通常、このパッケージはプラグイン開発に使用されます。
トピック:
このプロシージャは、サード・パーティの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パラメータ
パラメータ | 説明 |
---|---|
|
|
|
バージョン、.minおよび.jsを含めずにファイル名を指定します。 |
|
ファイル |
|
値が指定されていない場合、同じバージョンの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' )
構文
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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptオブジェクト属性の名前。 |
|
JavaScriptオブジェクト属性に割り当てられるテキスト。 |
|
TRUEを設定すると、 |
|
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)|| '});' );
このファンクションは、属性とその属性の数値を戻します。
構文
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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptオブジェクト属性の名前。 |
|
JavaScriptオブジェクト属性に割り当てられる数値。 |
|
TRUEを設定すると、 |
|
TRUEを設定すると、戻される値の後にカンマが追加されます。 |
例
「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。
このファンクションは、属性、および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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptオブジェクト属性の名前。 |
|
JavaScriptオブジェクト属性に割り当てられるブール値。 |
|
|
|
TRUEを設定すると、戻される値の後にカンマが追加されます。 |
例
「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。
このファンクションは、属性と、その属性の日付を戻します。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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptオブジェクト属性の名前。 |
|
JavaScriptオブジェクト属性に割り当てられる日付。 |
|
|
|
TRUEを設定すると、戻される値の後にカンマが追加されます。 |
例
「ADD_ATTRIBUTEファンクションのシグネチャ1」の例を参照してください。
このプロシージャは、インラインで含められるコード・スニペットを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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptコード・スニペット。「 |
|
コード・スニペットの識別子。識別子を指定した場合、同じ名前のコード・スニペットがすでに追加されていると、新しいコード・スニペットは無視されます。 |
例
次の例では、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' );
このプロシージャは、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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptファイルの名前。指定時に |
|
JavaScriptライブラリをロードするディレクトリ。末尾のスラッシュを付ける必要があります。 |
|
バージョン識別子。 |
|
TRUEの場合、プロシージャは |
|
TRUEの場合、拡張子 |
|
Internet Explorerの条件として使用される条件。 |
|
ライブラリがすでにロードされているかどうかを示すために使用する名前。指定しなければ、 |
例
次の例には、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 );
このプロシージャは、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のパラメータ
パラメータ | 説明 |
---|---|
|
onloadイベントの間に実行されるJavaScriptコード・スニペット。 |
|
指定されたコード・スニペットを識別する任意の名前。名前を指定した場合、同じ |
例
JavaScriptコールinitMySuperWidget()
をonloadバッファに追加します。このプラグインがページで複数回使用され、add_onload_code
が複数回コールされた場合でも、すべてのコールがp_key
に対して同じ値を持つため、HTML出力に1回しか追加されません。
apex_javascript.add_onload_code ( p_code => 'initMySuperWidget();' p_key => 'my_super_widget' );
このファンクションは、二重引用符で囲まれたエスケープされたテキストを戻します。たとえば、"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のパラメータ
パラメータ | 説明 |
---|---|
|
エスケープされ、二重引用符で囲まれるテキスト。 |
|
|
例
次の例では、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);' );
このファンクションは、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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptの数値として戻される数値。 |
|
|
例
「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。
このファンクションは、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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptのブール値として戻されるブール値。 |
|
|
例
「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。
このファンクションは、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のパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptの日付オブジェクトとして戻される日付。 |
|
|
例
「ADD_VALUEファンクションのシグネチャ1」の例を参照してください。
このファンクションはJavaScriptで使用されるテキストをエスケープします。このファンクションは次の置換を行います。
注意: このファンクションは、HTMLタグがJavaScriptオブジェクトの属性の割当てに悪影響を与えないようにするとともに、HTMLタグ「<」および「>」をエスケープします。その他のHTMLタグはエスケープされないため、XSS(クロスサイト・スクリプティング)攻撃を確実に防ぐには、SYS.HTF.ESCAPE_SC をコールして、HTMLページに文字列を差し込む際に、埋め込まれたJavaScriptコードが実行されるのを防ぐ必要もあります。 |
構文
APEX_JAVASCRIPT.ESCAPE ( p_text IN VARCHAR2) RETURN VARCHAR2;
パラメータ
表13-14では、ESCAPE
ファンクションで使用可能なパラメータについて説明します。
例
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);' );